“奇怪的”c#属性语法
本文关键字:属性语法 奇怪的 | 更新日期: 2023-09-27 17:50:27
我刚刚在一个c#项目中看到这个:
public char this[int index]
我认为自己是c#的新手;有人知道这是什么意思吗?
这是一个索引器
索引器允许对类或结构的实例进行索引数组。索引器类似于属性,只是它们的访问器使用参数。索引器提供类似数组的语法。它允许访问类型和数组一样。诸如索引器之类的属性经常访问支持存储。我们通常接受int类型的形参并访问a数组类型的后备存储。
从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")]
这就是indexer
。
- Indexer 带有访问修饰符的c#属性和索引器的c++实现
这叫做索引器。更多信息请访问MSDN。