C# 索引器用法

发布于 2024-08-02 15:11:54 字数 345 浏览 5 评论 0原文

为了拥有索引器,我们使用以下格式:

class ClassName
{
    DataType[] ArrayName = new DataType[Length]; 

    public DataType this[int i]
    {
        get { return ArrayName[i]; }
    }
}

为了简单起见,我使用了该格式,尽管我们也可以使用自定义索引器。根据我的理解,我们正在保留一个带索引的属性数组。

我的问题是:

  1. 它是模板化属性吗?
  2. 我们何时何地可以使用此索引器实现高度代码优化?

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 :

  1. Is it a templated property?
  2. When and where could we achieve high degree code optimization using this indexer?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

南风几经秋 2024-08-09 15:11:55

这不是一个模板化属性,它是一个参数化属性 - 即接受参数参数的属性。

这归结为简单的 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 a get_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.

〆凄凉。 2024-08-09 15:11:54

这与代码优化无关。
您可以在类中编写一个方法,该方法可以从它所保存的集合中获取项目。

例如,

public DataType GetItemByIndex(int i)
{
}

索引器在某种程度上是“语法糖”,让用户将实例视为数组或集合。

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.

public DataType GetItemByIndex(int i)
{
}

Indexers are in a way, "syntactic sugar", to let users treat the instance as an array or collection.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文