我有一个像这样使用的界面:
var descr = new IMyInterface[3];
乍一看,我认为这没有任何意义,因为它看起来像是一个接口被实例化(这是不可能的)。所以我认为这可能是对接口中定义的Indexer的调用,但我仍然不太明白这是如何工作的。所以我的问题是:
感谢您的帮助:)
答案 0 :(得分:2)
它正在创建一个包含三个元素的IMyInterface
数组。即IMyInterface[]
。这只是数组创建的常用new T[n]
语法,与new int[3]
没有区别。
从概念上讲,它与new Array<IMyInterface>(3)
类似,但由于历史原因,数组不是通用类型。
数组是具体类,因此即使成员类型是接口,也可以创建它的实例。成员将初始化为default(T)
,null
用于接口。
这与索引器无关。
可以像在类上一样在接口上定义索引器。但使用它们的语法不涉及new
。
也可以在某些COM相关场景中实例化接口。
答案 1 :(得分:1)
您正在创建一个3 IMyInterface
的数组...但数组中的每个项目都为空。