“奇怪的”C#属性语法

时间:2013-01-03 11:42:50

标签: c# properties indexer

我刚刚在c#项目中看到过这个:

public char this[int index]

我认为自己是C#的新手;任何人都可以帮助它的意义吗?

3 个答案:

答案 0 :(得分:15)

这是一个索引器。

  

索引器允许对类或结构的实例进行索引   阵列。索引器类似于属性,除了它们的访问器   参数。   索引器提供类似于数组的语法。它允许访问类型   与数组相同。索引器等属性经常访问a   支持商店。我们经常接受int类型的参数并访问a   支持数组类型的存储。

http://www.dotnetperls.com/indexer

阅读
string s = "hello";
Console.WriteLine (s[0]); // 'h'
Console.WriteLine (s[3]); // 'l'

实施索引器

要编写索引器,请定义一个名为this的属性,以square为单位指定参数 括号。例如:

class Sentence
{
   string[] words = "The quick brown fox".Split();
   public string this [int wordNum] // indexer
   {
      get { return words [wordNum]; }
      set { words [wordNum] = value; }
   }
}

以下是我们如何使用此索引器:

Sentence s = new Sentence();
Console.WriteLine (s[3]); // fox
s[3] = "kangaroo";
Console.WriteLine (s[3]); // kangaroo

类型可以声明多个索引器,每个索引器都具有不同类型的参数。一个 indexer也可以使用多个参数:

public string this [int arg1, string arg2]
{
  get  { ... } set { ... }
}

索引器在内部编译为名为get_Itemset_Item的方法,如下所示:

public string get_Item (int wordNum) {...}
public void set_Item (int wordNum, string value) {...}

编译器默认选择名称Item - 您实际上可以通过此更改 使用以下属性装饰您的索引器:

[System.Runtime.CompilerServices.IndexerName ("Blah")]

答案 1 :(得分:7)

答案 2 :(得分:7)

这称为索引器。详细了解他们at MSDN