簡體   English   中英

在C#中實例化IEnumerable數組

[英]Instantiating an IEnumerable array in C#

我想知道為什么你可以在C#中做到這一點:

IEnumerable<int>[] nums = new IEnumerable<int>[10];

但不能這樣做:

IEnumerable<int> nums = new IEnumerable<int>();

C#在第一個聲明的基礎上做了什么? 我以為你無法使用new關鍵字創建接口實例。

您是正確的,因為您無法在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};

雖然項類型是IEnumerable<int> ,但您無法創建IEnumerable<int>的實例。 您必須創建一個實現IEnumerable<int>的類的實例,如List<int>

在第二個示例中,您嘗試創建IEnumerable<int>的實例,它是一個接口,即不是類,因此它不會編譯。

變量類型仍然可以是IEnumerable<int> ,但您必須創建一個實現IEnumerable<int>的類的實例,如下所示:

IEnumerable<int> nums = new List<int>() {1,2,3};

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM