我刚刚在 ac# 项目中看到了这个:
public char this[int index]
我认为自己是 C# 新手;任何人都可以帮助它是什么意思?
它是一个索引器。
索引器允许类或结构的实例像数组一样被索引。索引器类似于属性,只是它们的访问器带有参数。索引器提供类似数组的语法。它允许以与数组相同的方式访问类型。诸如索引器之类的属性通常会访问后备存储。我们经常接受 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_Item
and的方法set_Item
,如下所示:
public string get_Item (int wordNum) {...}
public void set_Item (int wordNum, string value) {...}
编译器Item
默认选择名称——你实际上可以通过使用以下属性装饰你的索引器来改变它:
[System.Runtime.CompilerServices.IndexerName ("Blah")]
这被称为indexer
。
这称为索引器。在 MSDN 上阅读有关它们的更多信息。