C# 索引器用法
为了拥有索引器,我们使用以下格式:
class ClassName
{
DataType[] ArrayName = new DataType[Length];
public DataType this[int i]
{
get { return ArrayName[i]; }
}
}
为了简单起见,我使用了该格式,尽管我们也可以使用自定义索引器。根据我的理解,我们正在保留一个带索引的属性数组。
我的问题是:
- 它是模板化属性吗?
- 我们何时何地可以使用此索引器实现高度代码优化?
To have an indexer we use the following format:
class ClassName
{
DataType[] ArrayName = new DataType[Length];
public DataType this[int i]
{
get { return ArrayName[i]; }
}
}
For the sake of simplicity I used the format, even though we can go for a custom indexer also. According to my understanding, we are keeping a propery array that is indexed.
My question is :
- Is it a templated property?
- When and where could we achieve high degree code optimization using this indexer?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这不是一个模板化属性,它是一个参数化属性 - 即接受参数参数的属性。
这归结为简单的
get_Item(Int32)
方法来代替通常由编译器发出的get_Item()
方法来代替无参数属性。因此,这并没有提供太多优化机会。This isn't a templated property, it is a parameterful property - that is a property that accepts a parameter argument.
This boils down to simply a
get_Item(Int32)
method in place of aget_Item()
method that would normally be emitted by the compiler in place of a parameterless property. As such this doesn't open up much opportunities for optimization.这与代码优化无关。
您可以在类中编写一个方法,该方法可以从它所保存的集合中获取项目。
例如,
索引器在某种程度上是“语法糖”,让用户将实例视为数组或集合。
It is not about code optimization.
You could write a method in your class that can get you the item from the collection it holds.
e.g.
Indexers are in a way, "syntactic sugar", to let users treat the instance as an array or collection.