1

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

var descr = new IMyInterface[3];

乍一看,我认为这没有任何意义,因为它看起来像是正在实例化一个接口(这是不可能的)。所以我认为这可能是对接口中定义的 Indexer 的调用,但我仍然不太明白它是如何工作的。所以我的问题是:

  1. 这个电话在做什么?它是否调用接口中定义的索引器?
  2. 正在使用接口索引器的什么实现?

谢谢您的帮助 :)

4

2 回答 2

2

IMyInterface它正在创建一个包含三个元素的数组。即一个IMyInterface[]。这只是new T[n]创建数组的常用语法,与new int[3].

从概念上讲,它类似于new Array<IMyInterface>(3),除了由于历史原因数组不是泛型类型。

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

这与索引器无关。


可以像在类上那样在接口上定义索引器。但使用它们的语法不涉及new.

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

于 2012-05-25T11:50:17.917 回答
1

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

于 2012-05-25T11:50:17.717 回答