它是一个索引器。
索引器允许对类或结构的实例进行索引,就像
数组。索引器类似于属性,只是它们的访问器采用
参数。
索引器提供类似数组的语法。它允许访问类型
与数组的方式相同。诸如索引器之类的属性经常访问
后备商店。我们经常接受一个int类型的参数并访问一个
数组类型的后备存储。
阅读自http://www.dotnetperls.com/indexer 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
一个类型可以声明多个索引器,每个索引器具有不同类型的参数。一个
索引器还可以采用多个参数:
public string this [int arg1, string arg2]
{
get { ... } set { ... }
}
索引器内部编译为调用的方法get_Item
and set_Item
, 如下:
public string get_Item (int wordNum) {...}
public void set_Item (int wordNum, string value) {...}
编译器选择名称Item
默认情况下——你实际上可以通过以下方式更改它
使用以下属性装饰您的索引器:
[System.Runtime.CompilerServices.IndexerName ("Blah")]