8

我刚刚在 ac# 项目中看到了这个:

public char this[int index]

我认为自己是 C# 新手;任何人都可以帮助它是什么意思?

4

3 回答 3

15

它是一个索引器。

索引器允许类或结构的实例像数组一样被索引。索引器类似于属性,只是它们的访问器带有参数。索引器提供类似数组的语法。它允许以与数组相同的方式访问类型。诸如索引器之类的属性通常会访问后备存储。我们经常接受 int 类型的参数并访问数组类型的后备存储。

http://www.dotnetperls.com/indexer阅读

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

实现索引器

要编写索引器,请定义一个名为 this 的属性,并在方括号中指定参数。例如:

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

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

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

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

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

编译器Item默认选择名称——你实际上可以通过使用以下属性装饰你的索引器来改变它:

[System.Runtime.CompilerServices.IndexerName ("Blah")]
于 2013-01-03T11:44:26.750 回答
7

这被称为indexer

于 2013-01-03T11:43:30.460 回答
7

这称为索引器在 MSDN 上阅读有关它们的更多信息。

于 2013-01-03T11:43:47.777 回答