C# 接口的状态?这个代码是如何工作的?

C# 接口的状态?这个代码是如何工作的?,c#,C#,接口无法创建实例。 但是这个代码是有用的 IEnumerable<string> myStr = new[]{"am", "I", "a", "Instance", "of","Interface", "?"}; IEnumerable myStr=new[]{“am”、“I”、“a”、“Instance”、“of”、“Interface”、“?”}; 这段代码的意思不是创建实例的接口吗? 它是如何工作的?字符串数组就是实例。恰好实现了该接口。字符串数组就是实例。恰好实现了该接口

接口无法创建实例。 但是这个代码是有用的

IEnumerable<string> myStr = new[]{"am", "I", "a", "Instance", "of","Interface", "?"};
IEnumerable myStr=new[]{“am”、“I”、“a”、“Instance”、“of”、“Interface”、“?”};
这段代码的意思不是创建实例的接口吗?
它是如何工作的?

字符串数组就是实例。恰好实现了该接口。

字符串数组就是实例。恰好实现了该接口。

否。您正在使用的
新[]
表达式创建类
字符串[]
的实例,该类实现了接口
IEnumerable

否。您正在使用的
new[]
表达式创建类
string[]
的实例,该类实现接口
IEnumerable

右侧表达式
=
创建字符串数组
string[]
的实例,该实例实现
IEnumerable
,并将该实例分配给名为
myStr
的变量,其类型为
IEnumerable
。因此,实例的类型是
string[]
,但其行为类似于
IEnumerable
=
的右侧表达式创建字符串数组
string[]
的实例,该实例实现了
IEnumerable
,并将实例分配给名为
myStr
的变量,其类型为
IEnumerable
。因此,实例的类型是
string[]
,但它的行为方式是
IEnumerable

不,您刚刚将字符串数组分配给接口引用,它不是接口的实例,事实上,我们无法初始化接口的实例

下面的代码将打印myStr的实际类型

IEnumerable<string> myStr = new[]{"am", "I", "a", "Instance", "of","Interface", "?"};
Console.WriteLine(myStr.GetType());
IEnumerable myStr=new[]{“am”、“I”、“a”、“Instance”、“of”、“Interface”、“?”};
WriteLine(myStr.GetType());


作为旁注,您可以将实现该接口的类的任何实例分配给该接口的引用,这就是我们所称的

不,您刚刚将字符串数组分配给接口引用,它不是接口的实例,事实上,我们无法初始化接口的实例

下面的代码将打印myStr的实际类型

IEnumerable<string> myStr = new[]{"am", "I", "a", "Instance", "of","Interface", "?"};
Console.WriteLine(myStr.GetType());
IEnumerable myStr=new[]{“am”、“I”、“a”、“Instance”、“of”、“Interface”、“?”};
WriteLine(myStr.GetType());

作为旁注,您可以将实现该接口的任何类实例指定给该接口的引用,这就是我们所称的