方法声明中的方括号如何适合c#?这是我在阅读WPF验证时看到的,可以使用IDataErrorInfo以及以下示例。
public string this [string propertyName]
// Error handling takes place here.
public string this[string propertyName] // <== IE HERE
{
get
// etc
}
}
我注意到MSDN说“方括号([])用于数组,索引器和属性。它们也可以用于指针。”以上用法是指针吗?
答案 0 :(得分:9)
这是C#语言的标准功能,称为Indexer。通常,您在编写自己的集合或类似类型时会使用这些。这是一个简短的(不是现实世界的)例子。
public class Foo {
private List<int> m_Numbers = new List<int>();
public int this[int index] {
get {
return m_Numbers[index];
}
set {
m_Numbers[index] = value;
}
}
}
class Program {
static void Main() {
Foo foo = new Foo();
foo[0] = 1;
}
}
如果您有创意,可以使用索引器的很多很酷的东西,这是该语言的一个非常简洁的功能。
答案 1 :(得分:4)
这是索引器的声明。它与数组索引类似。 propertyName
是该方法用于索引某种集合的字符串。该方法从集合中返回相应的字符串。
当然,该方法可以做其他事情,但这就是语义的含义。
答案 2 :(得分:2)
那将是一个索引器属性。它们对自定义集合非常有用:
public class MyCustomCollection
{
List<MyObject> _list = new List<MyObject>();
public string this[string name]
{
get { return _list.Single(o => o.Name == name)
.Select(o => o.Description);
}
public string this[int id]
{
get { return _list.Single(o => o.Id == id).Select(o => o.Description);
}
}
然后您可以使用以下集合:
MyCollection col = new MyCollection();
// Fill the collection
string description = col["Name"];
string description2 = col[2];