C#中的“this ”是什么意思?

我正在通过一些库代码,看到一个方法,如:

public CollapsingRecordNodeItemList List { get { return this[0] as CollapsingRecordNodeItemList; } } 

包含这个方法的类不是一个列表或者可迭代的东西,那么this[0]究竟意味着什么呢?

在课堂上寻找索引器 。

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; } } 

这里是官方语言规范的定义:

索引器是一个使对象能够像数组一样被索引的成员。 一个索引器被声明为一个属性,除了成员的名字是这个,后面跟着一个写在分隔符[和]之间的参数列表。 这些参数在索引器的访问器中可用。 与属性类似,索引器可以是可读写的,只读的和只写的,并且索引器的访问器可以是虚拟的。

可以在第10.9节规格的索引器中find完整的完整定义。

这意味着声明types(或其基类)有一个“索引器”,大概需要一个int (或类似),并返回…的东西(也许是object ?)。 该代码调用索引器的get访问器,将0作为索引 – 然后将返回的值视为CollapsingRecordNodeItemList (或者返回的值与此不兼容)。

例如:

 public object this[int index] { get { return someOtherList[index]; } } 

虽然最简单的事情就是踏入其中。 这将告诉你到底在哪里。

假设类本身inheritance自IList / IList<T>某种forms,它只是返回(和铸造)集合中的第一个元素。

 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 } 

它意味着在这个类上调用item属性的get方法。 这叫做class级的索引器

索引器允许像数组一样索引类或结构的实例。 索引器类似于属性,只不过它们的访问器需要参数。