2

我第一次遇到这种语法(我正在使用 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

4 回答 4

3

它被称为Indexer

索引器允许类或结构的实例像数组一样被索引。索引器类似于属性,只是它们的访问器带有参数。

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

您可以阅读“奇怪的”C# 属性语法

于 2013-03-21T12:13:20.617 回答
2

它是一个索引器

索引器允许类或结构的实例像数组一样被索引。索引器类似于属性,只是它们的访问器带有参数。

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

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

于 2013-03-21T12:13:10.560 回答
0

this[] 语法是“索引器”。它是转发私有支持集合的语法糖。它允许您使用类似数组的类,但在返回数据之前封装一些逻辑。例如,您可以包装 Dictionary 以针对不存在的键返回 null 而不是抛出异常。

于 2013-03-21T12:17:02.293 回答
0

这使您可以像使用数组一样使用类来访问元素:

for ex 而不是写作

var element = myObject.GetElementAt(index);

你写

var 元素 = myObject[索引];

于 2013-03-21T12:18:06.993 回答