我想知道为什么你可以在C#中做到这一点:
IEnumerable<int>[] nums = new IEnumerable<int>[10];
但不能这样做:
IEnumerable<int> nums = new IEnumerable<int>();
C#在第一个声明的基础上做了什么?我以为你无法使用new关键字创建接口实例.
Joa*_*oog 12
您是正确的,因为您无法在C#中创建接口实例.这两种说法之间的区别是,在第一条语句要创建一个数组的IEnumerable<int>,这是允许的.
如果您创建实现IEnumerable<T>接口的类的实例,则第二个语句将起作用,例如List<T>.
这样做的一个例子是:IEnumerable<int> numbers = new List<int> {1,2,3};;
你也可以这样做: IEnumerable<int> numbers = new int[] {1, 2, 3}
第一个语句是创建一个大小为10的新数组,其中项类型为IEnumerable<int>.数组本身是您可以创建的具体类型.
要在此数组中设置项目,您可以执行以下操作:
num[0] = new List<int>() {1,2,3};
Run Code Online (Sandbox Code Playgroud)
虽然项类型是IEnumerable<int>,但您无法创建实例IEnumerable<int>.您必须创建一个实现IEnumerable<int>类的类的实例List<int>.
在第二个示例中,您尝试创建一个实例,IEnumerable<int>该实例是一个接口,即不是类,因此它不会编译.
变量类型仍然可以IEnumerable<int>,但您必须创建一个类实例,IEnumerable<int>如下所示:
IEnumerable<int> nums = new List<int>() {1,2,3};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2729 次 |
| 最近记录: |