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

LJN*_*nDk 0 c# properties

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

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

Mar*_*ell 5

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

var oldVal = obj[1];
obj[1] = newVal;
Run Code Online (Sandbox Code Playgroud)

它是"不同的",因为:

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

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

Dictionary<string, decimal> lookup = ...
string employeeKey = "000006";
decimal salary = lookup[employeeKey];
Run Code Online (Sandbox Code Playgroud)