“奇怪的”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_Item
和set_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阅读更多关于他们的信息 。