Dot-Net

將 IEnumerable<T> 轉換為 IList

  • October 3, 2015

如果一個方法採用 System.Collections.IList 類型的參數,我可以合法/安全地傳遞一個類型的值System.Collections.Generic.IEnumerable&lt;T&gt;嗎?

我將不勝感激詳細解釋為什麼這是可能的,以及在方法內部使用T時對象實際發生的情況。IEnumerable&lt;T&gt;

它是否轉換為 Object 的基本類型?

它用作System.Collections.IEnumerable?

是否有任何情況會導致問題(即性能問題)?

在此先感謝,約翰

,您不能將 an 傳遞IEnumerable&lt;T&gt;給採用IList. 該介面IEnumerable&lt;T&gt;不可轉換為IList,嘗試將類型變數傳遞IEnumerable&lt;T&gt;給採用的方法IList將導致編譯錯誤。

為了完成這項工作,您需要執行以下操作之一

  1. 保持對實現和IEnumerable&lt;T&gt;的類型的引用,而不是。是這裡的好人選IEnumerable&lt;T&gt;``IList``List&lt;T&gt;
  2. IEnumerable&lt;T&gt;實例轉換為可轉換為的新對象IList。例如,在 3.5+ 中,您可以呼叫.ToList()擴展方法來創建一個新List&lt;T&gt;的列舉。

引用自:https://stackoverflow.com/questions/2000441