这[0]是什么?c#中的平均值

本文关键字:平均值 是什么 | 更新日期: 2023-09-27 18:14:30

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

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

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

这[0]是什么?c#中的平均值

查找类中的索引器

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

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

indexer是一个成员,它使对象能够像数组一样被索引。索引器的声明方式类似于属性,不同之处在于,成员名是this,后跟在分隔符[和]之间写入的参数列表。这些参数在索引器的访问器中可用。与属性类似,索引器可以是读写、只读和仅写,并且索引器的访问器可以是虚拟的。

可以在规范的10.9 Indexers小节中找到完整的定义。

这意味着声明类型(或其基类)有一个"索引器",该索引器可能接受int(或类似)并返回…什么(也许是object ?)。代码调用索引器的get访问器,传递0作为索引-然后将返回值视为CollapsingRecordNodeItemList(或null,返回值与之不兼容)。

例如:

public object this[int index] {
    get { return someOtherList[index]; }
}
然而,最简单的方法就是进入它。这将告诉你确切的它要去哪里

假设类本身继承了某种形式的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
}

这意味着在这个类上调用item属性的get方法。它被称为类的索引器

索引器允许类或结构的实例像数组一样被索引。索引器类似于属性,只是它们的访问器接受形参。