这与 C# 中的普通属性有何不同?
public new Point3D this[int index]
{
get { return base[index]; }
set
{
base[index] = value;
CollectionModified();
}
这与 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];
它是一个索引器。它是这样工作的(无需调用任何属性):
yourPoints[0] = new Point3D();
Point3D point = yourPoints[0];
这是一个索引器属性,一种让您的自定义类参与在方括号中传递数组下标的表达式的属性。
此索引器替换其基类(可能是集合)的索引器属性,该基类也必须具有索引器属性。getter 将调用转发到 base,而 setter 也调用CollectionModified
,大概是为了通知正在监视集合中的修改的任何人。