奇怪的c#属性定义(索引器)

本文关键字:索引 定义 属性 | 更新日期: 2023-09-27 18:10:47

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

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

奇怪的c#属性定义(索引器)

这是一个索引器;它不是用作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];