“奇怪的”C#属性语法

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

public char this[int index] 

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

这是一个索引器。

索引器允许像数组一样索引类或结构的实例。 索引器类似于属性,只不过它们的访问器需要参数。 索引器提供类似数组的语法。 它允许types被访问与数组相同的方式。 索引器等属性通常访问后备存储。 我们经常接受inttypes的参数并访问数组types的后备存储。

请从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 

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

 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) {...} 

编译器在默认情况下selectItem名称 – 实际上可以通过使用以下属性装饰索引器来更改此名称:

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

这被称为indexer

  • 索引
  • 使用Accessor修饰符的C#属性和索引器的C ++实现

这就是所谓的索引器 。 在MSDN阅读更多关于他们的信息 。