我正在浏览一些库代码,并看到了一个类似的方法:
public CollapsingRecordNodeItemList List
{
get { return this[0] as CollapsingRecordNodeItemList; }
}
包含此方法的类不是列表或可迭代的类,那么this[0]
究竟是什么意思?
答案 0 :(得分:97)
在班级中寻找indexer。
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;
}
}
以下是the official language specification的定义:
索引器是一个成员,它允许以与数组相同的方式对对象建立索引。索引器被声明为属性,除了成员的名称是后跟在分隔符[和]之间写入的参数列表。参数在索引器的访问器中可用。与属性类似,索引器可以是读写,只读和只写,索引器的访问器可以是虚拟的。
可以在规范的 10.9 Indexers 部分找到完整和完整的定义。
答案 1 :(得分:11)
这意味着声明类型(或者它的基类)有一个“索引器”,可能需要int
(或类似)并返回......某些东西(也许object
? )。代码调用索引器的get
访问器,将0
作为索引传递 - 然后将返回的值视为CollapsingRecordNodeItemList
(或null
返回的值与之不兼容这一点)。
例如:
public object this[int index] {
get { return someOtherList[index]; }
}
最简单的事情就是进入它。这将告诉你完全它的目的地。
答案 2 :(得分:3)
假设类本身继承了IList
/ IList<T>
的某种形式,它只是返回(并转换)集合中的第一个元素。
public class BarCollection : System.Collections.CollectionBase
{
public Bar FirstItem
{
get { return this[0] as Bar; }
}
#region Coming From CollectionBase
public Object this[ int index ] {
get { return this.InnerList[index]; }
set { this.InnerList[index] = value; }
}
#endregion
}
答案 3 :(得分:1)
这意味着在此类上调用item
属性的get
方法。它被称为班级Indexer
索引器允许对类或结构的实例进行索引,就像数组一样。索引器类似于属性,除了它们的访问器接受参数。