C#中"this [0]"是什么意思?

Cem*_*mre 59 c#

我正在浏览一些库代码并看到一个方法,如:

public CollapsingRecordNodeItemList List
{
    get { return this[0] as CollapsingRecordNodeItemList; }
}
Run Code Online (Sandbox Code Playgroud)

包含此方法的类不是列表或可迭代的东西,那究竟this[0]是什么意思呢?

Ben*_*aum 96

在班级中寻找一个索引器.

C#允许您定义索引器以允许此类访问.

以下是"SampleCollection"官方指南中的示例.

public T this[int i]
    {
        get
        {
            // This indexer is very simple, and just returns or sets 
            // the corresponding element from the internal array. 
            return arr[i];
        }
        set
        {
            arr[i] = value;
        }
    }
Run Code Online (Sandbox Code Playgroud)

以下是官方语言规范的定义:

一个分度器是使得对象以相同的方式作为数组要索引的部件.索引器被声明为属性,除了成员的名称是后跟在分隔符[和]之间写入的参数列表.参数在索引器的访问器中可用.与属性类似,索引器可以是读写,只读和只写,索引器的访问器可以是虚拟的.

人们可以在规范的第10.9索引器中找到完整和完整的定义.

  • @Cemre语言规范声明(第1.6.7.3节)"索引器可以重载,这意味着只要参数的数量或类型不同,类就可以声明多个索引器." :)这可能是这种情况 (4认同)

Mar*_*ell 10

这意味着声明类型(或基类的那个),有一个"索引"这大概需要一个int(或类似),并返回......什么(也许object?).代码调用索引器的get访问器,0作为索引传递- 然后将返回的值视为CollapsingRecordNodeItemList(或null返回的值与之不兼容).

例如:

public object this[int index] {
    get { return someOtherList[index]; }
}
Run Code Online (Sandbox Code Playgroud)

但最简单的事情就是迈向它.这将告诉你它到底要去哪里.