2011-11-10 56 views

回答

26

使用ICollection<T>.CopyTo

string[] strings = new string[list.Count]; 
list.CopyTo(strings, 0); 

我不是很確定如果我理解無LINQ限制有關係嗎?這聽起來像你會使用ToArray,如果IList<T>有它。但事實證明這是因爲IEnumerable<T>.ToArrayIEnumerable<T>定義的擴展方法,其中IList<T>實現。那麼你爲什麼不使用它呢?

+0

16 upvotes一個普通的舊的和熟悉的.NET框架方法一小時後。我應該自己回答更多的C#問題;) –

1

無論如何,你將不得不創建一個數組,並使用列表中的內容填充它的內容。這是做這件事最直接的方法。

var arr = new string[Your_List.Count] 

for(var ii = 0; ii < arr.Length; ii++){ 
    arr[ii] = Your_List[ii]; 

} 
3

ToArray是IEnumerable的擴展方法,IList實現IEnumerable。你可以做到這一點,如果你導入。

0

嘗試:

public static T[] ToArray<T>(this IList<T> list) 
    { 
     if (list is Array) return (T[]) list; 

     T[] retval = new T[list.Count]; 
     for (int i = 0; i < retval.Length; i++) 
      retval[i] = list[i]; 

     return retval; 
    } 

它只是一個粗略的。可能是它的幫助。

4

如果你被迫有IList中,然後得到一個數組...

IList list; 
var array = new List<string>(list).ToArray() 
相關問題