C# 中的项属性

本文关键字:属性 | 更新日期: 2023-09-27 17:55:47

c# 中的

项属性是否总是像 C# 中的索引器一样使用?让我用一个例子来解释。ArrayList具有许多属性,如计数,容量,其中之一是Item.Item Property,与计数和容量不同,计数和容量是通过在ArrayList的名称后放置点来访问的,不是由关键字Item使用,而是由索引器直接使用。例如

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

如上所示,例如使用 Item 关键字来定义索引器,而不是实现 Item 属性。

我的查询:我能说每当在 c# Item 属性中解释时,都应该隐式理解它指的是术语索引器吗?

C# 中的项属性

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 直接支持[]语法(如数组),否则它是在类内部定义的索引器,如上所述使用语法糖。

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

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

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