对给定索引处的接口使用“new”修饰符,例如“var b = new ISomeInterface[0];”,这是啥意思?

Posted

技术标签:

【中文标题】对给定索引处的接口使用“new”修饰符,例如“var b = new ISomeInterface[0];”,这是啥意思?【英文标题】:Using the 'new' modifier with interfaces at a given index like 'var b = new ISomeInterface[0];', what does it mean?对给定索引处的接口使用“new”修饰符,例如“var b = new ISomeInterface[0];”,这是什么意思? 【发布时间】:2014-08-12 11:53:24 【问题描述】:

我第一次遇到下面的 C# 语法,我会把它当作语法错误丢弃,除非 VS 对它非常满意并且可以编译。

var a = new ISomeInterface[0];

接口声明为

public interface ISomeInterface


也非常感谢您提供进一步阅读的链接。

【问题讨论】:

将鼠标移到 var 关键字上:它会显示实际类型(即数组) 【参考方案1】:

您已经创建了一个 ISomeInterface 数组。

这与声明任何其他数组相同,例如:

string[] a = new string[0];

一开始我也有点怀疑,因为乍一看,代码似乎在实例化一个接口,这是你通常无法做到的。

【讨论】:

【参考方案2】:

它正在创建一个新数组(零长度),而不是接口的新实例。顺便说一句,您实际上可以new 一个接口...在正确的条件下;p(COM 属性)

【讨论】:

我不知道是让 Marc Gravell 亲自回答我的问题更让我感到荣幸,还是在意识到我提出了这么愚蠢的问题时更感到羞愧!不管怎样,谢谢! =)

以上是关于对给定索引处的接口使用“new”修饰符,例如“var b = new ISomeInterface[0];”,这是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章

C#笔记(十四)——接口泛型

C#接口

csharp 使用LINQ检查列表中的项是否具有其属性之一的特定值,第二种方式使用“out”修饰符来返回va

java自学之路-day06

java 修饰符

Java 修饰符