这与C#中的普通属性有什么不同?
public new Point3D this[int index]
{
get { return base[index]; }
set
{
base[index] = value;
CollectionModified();
}
答案 0 :(得分:5)
这是索引器;它不是用作obj.Foo
,而是用作obj[index]
,即:
var oldVal = obj[1];
obj[1] = newVal;
它是“不同的”,因为:
请注意,索引器参数不必是整数;可以是各种各样的:
Dictionary<string, decimal> lookup = ...
string employeeKey = "000006";
decimal salary = lookup[employeeKey];
答案 1 :(得分:2)
这是Indexer。它的工作原理如下(无需调用任何属性):
yourPoints[0] = new Point3D();
Point3D point = yourPoints[0];
答案 2 :(得分:2)
这是一个索引器属性,这是一种属性,它允许您的自定义类参与在方括号中传递数组下标的表达式。
此索引器替换其基类(可能是集合)的索引器属性,该属性还必须具有索引器属性。 getter将调用转发给base,而setter也调用CollectionModified
,大概是为了通知那些正在观看集合中修改的人。