c# 中的项目 属性

Item property in c#

C# 中的项目 属性 是否总是像 C# 中的索引器一样使用? 让我用一个example来解释一下。 ArrayList 有许多属性,如计数、容量,其中一个是 Item.Item 属性 与计数和容量不同,计数和容量是通过在 ArrayList 的名称后面加上点来访问的,不被关键字 Item 使用,而是直接被 Indexer 使用. 例如

ArrayList MyList = new ArrayList();
MyList.add(100);
MyList[0] = 200;

如上使用 Item 关键字来定义索引器而不是实现 Item 属性.

我的查询:我可以说每当在 c# 项 属性 被解释时,它应该被隐含地理解它在术语中引用索引器吗?

根据上面的文档,索引器定义如下。

public virtual object this[
    int index
] { get; set; }

更准确地说,实际上没有 Item 属性,但索引器在文档中被称为 'Item property'。

MyList[0] 是一个索引器,它使您可以像访问数组一样访问对象。定义语法是这样的:

public T this[int index]
{
   // reduced for simplicity
   set { internalArray[index] = value; }
   get { return internalArray[index]; }
}

编译器生成方法:

public T get_Item(inde index)
{
    return internalArray[index];
}

public void set_Item(inde index, T value)
{
    internalArray[index] = value;
}

List.Add(something)List[0] = something没有关系。第一个是将值附加到列表末尾的方法。第二个是调用方法的语法糖 List.set_Item(0, something).

除非 CLR 直接支持 [] 语法(如数组),否则它是在 class 中定义的索引器,如上所述使用语法糖。