Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
什么是;这是[0]”;用C#表示什么意思?_C# - Fatal编程技术网

什么是;这是[0]”;用C#表示什么意思?

什么是;这是[0]”;用C#表示什么意思?,c#,C#,我浏览了一些库代码,看到了一个方法,如: public CollapsingRecordNodeItemList List { get { return this[0] as CollapsingRecordNodeItemList; } } 包含此方法的类不是列表或可编辑的对象,因此此[0]的确切含义是什么?它意味着在此类上调用项属性的get方法。它叫班级的 索引器允许类或结构的实例像数组一样被索引。索引器与属性相似,只是它们的访问器采用参数 假设类本身继承自某个表单ifIList/

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

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

包含此方法的类不是列表或可编辑的对象,因此
此[0]
的确切含义是什么?

它意味着在此类上调用
属性的
get
方法。它叫班级的

索引器允许类或结构的实例像数组一样被索引。索引器与属性相似,只是它们的访问器采用参数


假设类本身继承自某个表单if
IList
/
IList
,它只是返回(并强制转换)集合中的第一个元素

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
}
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;
        }
    }
在课堂上寻找一个合适的答案

C#允许您定义索引器以允许这种访问

以下是“样本收集”官方指南中的一个示例

以下是以下定义:

索引器是一个成员,它允许以与数组相同的方式对对象进行索引。索引器的声明类似于属性,只是成员的名称是this,后跟一个写在分隔符[和]之间的参数列表。这些参数在索引器的访问器中可用。与属性类似,索引器可以是可读写、只读和只读的,并且索引器的访问器可以是虚拟的


可以在规范的10.9索引器部分找到完整的定义。

这意味着声明类型(或其基类)有一个“索引器”,该“索引器”可能采用
int
(或类似)并返回。。。某些东西(可能是
对象
?)。代码调用索引器的
get
访问器,将
0
作为索引传递,然后将返回值视为
collasingRecordNodeItemList
(或
null
返回值与此不兼容)

例如:

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

不过,最简单的方法就是迈出这一步。这将告诉您它到底要去哪里。

该类有一个属性。该类是否覆盖索引运算符[]?@cemere查看是否存在
此[int index]
此[long index]
或类似的内容。。。不能将整数(
0
)作为
string name
@Cemre传递,这只是另一个索引器。父类是用
字符串
类型索引的。这只是一条可能有助于未来读者的附加信息。索引器首先是在抽象类Collectionbase中引入的。这个功能后来也成为了列表的一部分。
IEnumerable
没有定义索引器,我猜你的意思是
IList
。事实上,仍然在起床和喝咖啡。;-)很好,谢谢。我在一个父类中发现了一个属性,但是索引是
string
而不是
int
public-GoObject此[string-name]{get;set;}
。我想其他地方还有一个。@Cemre语言规范规定(第1.6.7.3节)“索引器可以重载,这意味着一个类可以声明多个索引器,只要它们的参数的数量或类型不同。”:)这里可能就是这种情况,谢谢您的评论。刚刚找到另一个:
公共虚拟对象this[int index]{get;set;}
:)