我正在浏览一些库代码并看到一个方法,如:
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节索引器中找到完整和完整的定义.
Mar*_*ell 10
这意味着声明类型(或基类的那个),有一个"索引"这大概需要一个int(或类似),并返回......什么(也许object?).代码调用索引器的get访问器,0作为索引传递- 然后将返回的值视为CollapsingRecordNodeItemList(或null返回的值与之不兼容).
例如:
public object this[int index] {
get { return someOtherList[index]; }
}
Run Code Online (Sandbox Code Playgroud)
但最简单的事情就是迈向它.这将告诉你它到底要去哪里.