C# 接口和索引器

C# 接口和索引器,c#,.net,interface,indexer,C#,.net,Interface,Indexer,我有一个这样使用的界面: var descr = new IMyInterface[3]; 乍一看,我认为这没有任何意义,因为它看起来像是一个正在实例化的接口(这是不可能的)。所以我认为这可能是对接口中定义的索引器的调用,但我仍然不太理解它是如何工作的。所以我的问题是: 这个电话在干什么?它正在调用接口中定义的索引器吗 正在使用接口的索引器的什么实现 感谢您的帮助:)您正在创建一个由3个IMyInterface组成的数组。。。但是数组中的每个项都是空的。它正在创建一个包含三个元素的IMyInt

我有一个这样使用的界面:

var descr = new IMyInterface[3];
乍一看,我认为这没有任何意义,因为它看起来像是一个正在实例化的接口(这是不可能的)。所以我认为这可能是对接口中定义的索引器的调用,但我仍然不太理解它是如何工作的。所以我的问题是:

  • 这个电话在干什么?它正在调用接口中定义的索引器吗
  • 正在使用接口的索引器的什么实现

  • 感谢您的帮助:)

    您正在创建一个由3个
    IMyInterface
    组成的数组。。。但是数组中的每个项都是空的。

    它正在创建一个包含三个元素的
    IMyInterface
    数组。i、 e.a
    IMyInterface[]
    。这只是创建数组时常用的
    new T[n]
    语法,与
    new int[3]
    没有区别

    从概念上讲,它类似于新数组(3),只是由于历史原因,数组不是泛型类型

    数组是一个具体的类,因此即使成员类型是接口,也可以创建它的实例。成员将被初始化为
    default(T)
    ,对于接口而言,默认值为
    null

    这与索引器无关


    可以在接口上定义索引器,就像在类上定义索引器一样。但是使用它们的语法并不涉及
    new


    也可以在某些COM相关场景中实例化接口。

    也许您还应该解释您的目标,以帮助您更正语法。谢谢您的帮助。我们只是自己想出来的。如果你想一想,这是非常明显的。我们读得太多了哈哈。谢谢:)哈哈,是的,我们也算明白了。很尴尬。我们读到它的方式太多的思考索引和什么没有。谢谢你的帮助:)