奇怪的c#属性定义(索引器)
本文关键字:索引 定义 属性 | 更新日期: 2023-09-27 18:10:47
这与c#中的普通属性有何不同?
public new Point3D this[int index]
{
get { return base[index]; }
set
{
base[index] = value;
CollectionModified();
}
这是一个索引器;它不是用作obj.Foo
,而是用作obj[index]
,即:
var oldVal = obj[1];
obj[1] = newVal;
它是"不同的",因为:
- 没有明确的名称
- 它接受一个或多个参数
注意,索引器参数不一定是整数;可以是所有类型:
Dictionary<string, decimal> lookup = ...
string employeeKey = "000006";
decimal salary = lookup[employeeKey];
这是一个indexer属性,这种属性可以让您的自定义类参与传递方括号中数组下标的表达式。
此索引器替换其基类(可能是一个集合)的索引器属性,该基类也必须具有索引器属性。getter将调用转发到基类,而setter也调用CollectionModified
,可能是为了通知正在监视集合中修改的任何人。
它是一个索引器。它是这样工作的(不需要调用任何属性):
yourPoints[0] = new Point3D();
Point3D point = yourPoints[0];