c# - 方法声明中的方括号如何与c#一致?

Gre*_*reg 1 c# idataerrorinfo

方法声明中的方括号如何与c#一致?这是我在阅读WPF验证时看到的,可以使用IDataErrorInfo以及以下示例.

public string this [string propertyName]

// Error handling takes place here.
public string this[string propertyName]  // <== IE HERE
{
  get
  // etc 
  }
}
Run Code Online (Sandbox Code Playgroud)

我注意到MSDN说"方括号([])用于数组,索引器和属性.它们也可以用于指针." 那么上面的用法指针是什么?

Dav*_*son 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;
    }
}
Run Code Online (Sandbox Code Playgroud)

如果你很有创意,你可以使用索引器的很多很酷的东西,这是该语言的一个非常简洁的功能.