接口实例?这些代码是如何工作的

本文关键字:何工作 工作 实例 代码 接口 | 更新日期: 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小提琴

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