它是一个索引器。
索引器允许类或结构的实例被索引,就像
数组。索引器类似于属性,只是它们的访问器采用
参数。
索引器提供类似数组的语法。它允许访问类型
与数组相同的方式。诸如索引器之类的属性经常访问一个
后备商店。我们经常接受一个 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
一个类型可以声明多个索引器,每个索引器都有不同类型的参数。一个
indexer 也可以带多个参数:
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) {...}
编译器默认选择名称Item——你实际上可以通过
使用以下属性装饰您的索引器:
[System.Runtime.CompilerServices.IndexerName ("Blah")]