接口和索引器

时间:2012-05-25 11:48:16

标签: c# .net interface indexer

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

var descr = new IMyInterface[3];

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

  1. 这个电话是做什么的?它是在调用接口中定义的索引器吗?
  2. 正在使用接口索引器的哪些实现?
  3. 感谢您的帮助:)

2 个答案:

答案 0 :(得分:2)

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

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

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

这与索引器无关。


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

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

答案 1 :(得分:1)

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