Mic*_*uso 13 c# methods indexer
做了一些代码阅读,并偶然发现了我之前从未见过的片段:
public SomeClass {
public someInterface this[String strParameter] {
get {
return SomeInternalMethod(strParameter);
}
}
}
Run Code Online (Sandbox Code Playgroud)
它看起来像是如下调用:
SomeClass _someClass = new SomeClass();
SomeInterface returnedValue = _someClass["someString"];
Run Code Online (Sandbox Code Playgroud)
我感兴趣的是这个函数适合的地方或者这种风格的写作意图.例如,为什么这比简单地调用函数更受欢迎?
Eri*_*ert 22
请参阅语言规范,第10.9节,其中规定:
一个分度器是使得以相同的方式作为数组要索引的对象的构件.
索引器和属性在概念上非常相似,但在以下方面有所不同:
dev*_*xer 18
似乎很多答案都集中在索引器上,而不是为什么要使用索引器.
就我而言,这是使用索引器的动机:
您正在处理具有某种集合的类,但您希望该类对用户(该类的使用者)显示,就像它是一个集合一样.
我能想到的最好的例子是DataRowADO.NET中的类.如果你想获得a的第五个单元格的值DataRow,你可以使用DataRow.Item[4]或DataRow[4].后一种形式是一种方便和逻辑的快捷方式,它很好地展示了为什么你想要使用索引器.对于用户来说,DataRow可以将其视为一组单元格(即使它确实不止于此),因此能够直接获取和设置单元格值是有意义的,而不必记住您实际上正在获取/设置Item.
希望有所帮助.