接口实例?这些代码是如何工作的
本文关键字:何工作 工作 实例 代码 接口 | 更新日期: 2023-09-27 18:04:45
接口无法创建实例。但是这个代码是工作的。
IEnumerable<string> myStr = new[]{"am", "I", "a", "Instance", "of","Interface", "?"};
这段代码的意思不是创建一个实例接口吗?它是如何工作的?
No。您正在使用的new[]
表达式创建了类string[]
的实例,该类实现了接口IEnumerable<string>
。
字符串数组为实例。它恰好实现了那个接口
=
右边的表达式创建了一个字符串数组string[]
的实例,该实例实现了IEnumerable<string>
,并将该实例赋值给一个名为myStr
的变量,其类型为IEnumerable<string>
。所以实例的类型是string[]
,但是它的行为是IEnumerable<string>
。
不,您刚刚将字符串数组分配给接口引用,它不是接口的实例,实际上我们不能初始化接口的实例。
下面的代码将打印myStr
的实际类型。
IEnumerable<string> myStr = new[]{"am", "I", "a", "Instance", "of","Interface", "?"};
Console.WriteLine(myStr.GetType());
dotnet小提琴
作为旁注,您可以将实现该接口的任何类的实例分配给该接口的引用,这就是我们所说的多态性。