这个[参数]语法是什么?

时间:2013-03-21 12:11:52

标签: c# methods syntax this

我刚刚第一次遇到这种语法(我正在使用WPF,但不确定它是否只适用于WPF)

public string this[string name]
{
   if(this.User == name)
   {
      ...
   }
}

使用此方法比以下标准方法有什么优势?

public string Validate(string name)
{
   if(this.User == name)
   {
      ...
   }
}

我尝试编译public string this(string name)但这不起作用,因此this方面是关键。但是这种格式是否实现了标准方法所不具备的功能,是否仅适用于WPF,还是语言实现?

4 个答案:

答案 0 :(得分:3)

它被称为Indexer

  

索引器允许对类或结构的实例进行索引   阵列。索引器类似于属性,除了它们的访问器   参数。

索引器提供类似数组的语法。它允许以与数组相同的方式访问类型。索引器等属性通常会访问后备存储。

您可以阅读“Strange” C# property syntax

答案 1 :(得分:2)

这是indexer

  

索引器允许对类或结构的实例进行索引,就像数组一样。索引器类似于属性,除了它们的访问器接受参数。

这些通常用于集合类型 - 例如字典,列表和数组。

在您给出的具体示例中,方法似乎更合适。

答案 2 :(得分:0)

这个[]语法是“Indexer”。它是转发私有支持集合的语法糖。它允许您使用类数组,但在返回数据之前封装一些逻辑。例如,您可以将Dictionary包装为为未显示的键返回null,而不是抛出异常。

答案 3 :(得分:0)

这允许您像使用数组一样使用您的类来访问元素:

代表写作

  

var element = myObject.GetElementAt(index);

你写了

  

var element = myObject [index];