0

这与 C# 中的普通属性有何不同?

    public new Point3D this[int index]
    {
        get { return base[index]; }
        set
        {
            base[index] = value;
            CollectionModified();
        }
4

3 回答 3

5

这是一个索引器;而不是被用作obj.Foo,它被用作obj[index],即:

var oldVal = obj[1];
obj[1] = newVal;

它是“不同的”,因为:

  • 它没有明确的名称
  • 它接受一个参数(或多个参数)

请注意,索引器参数不必是整数;可以是各种各样的:

Dictionary<string, decimal> lookup = ...
string employeeKey = "000006";
decimal salary = lookup[employeeKey];
于 2013-04-25T12:11:42.510 回答
2

它是一个索引器。它是这样工作的(无需调用任何属性):

yourPoints[0] = new Point3D();

Point3D point = yourPoints[0];
于 2013-04-25T12:13:28.110 回答
2

这是一个索引器属性,一种让您的自定义类参与在方括号中传递数组下标的表达式的属性。

此索引器替换其基类(可能是集合)的索引器属性,该基类也必须具有索引器属性。getter 将调用转发到 base,而 setter 也调用CollectionModified,大概是为了通知正在监视集合中的修改的任何人。

于 2013-04-25T12:14:53.490 回答