我刚刚第一次遇到这种语法(我正在使用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,还是语言实现?
答案 0 :(得分:3)
它被称为Indexer
。
索引器允许对类或结构的实例进行索引 阵列。索引器类似于属性,除了它们的访问器 参数。
索引器提供类似数组的语法。它允许以与数组相同的方式访问类型。索引器等属性通常会访问后备存储。
答案 1 :(得分:2)
这是indexer:
索引器允许对类或结构的实例进行索引,就像数组一样。索引器类似于属性,除了它们的访问器接受参数。
这些通常用于集合类型 - 例如字典,列表和数组。
在您给出的具体示例中,方法似乎更合适。
答案 2 :(得分:0)
这个[]语法是“Indexer”。它是转发私有支持集合的语法糖。它允许您使用类数组,但在返回数据之前封装一些逻辑。例如,您可以将Dictionary包装为为未显示的键返回null,而不是抛出异常。
答案 3 :(得分:0)
这允许您像使用数组一样使用您的类来访问元素:
代表写作
你写了var element = myObject.GetElementAt(index);
var element = myObject [index];