2011-11-10 17 views

Trả lời

26

Sử dụng ICollection<T>.CopyTo:

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

Tôi không hoàn toàn chắc chắn nếu tôi hiểu được những hạn chế không LINQ mặc dù? Có vẻ như bạn sẽ sử dụng ToArray nếu IList<T> có nó. Nhưng hóa ra là vì IEnumerable<T>.ToArray là một phương pháp mở rộng được xác định trên IEnumerable<T> trong đó IList<T> thực hiện. Vậy tại sao bạn không dùng nó?

+0

16 upvotes sau một giờ cho một phương pháp .net-framework cũ và quen thuộc đồng bằng. Tôi nên trả lời thường xuyên hơn C# câu hỏi bản thân mình;) –

1

Cách này hay cách khác, bạn sẽ phải tạo một mảng và điền vào nội dung của nó với những gì có trong danh sách. Đây là cách tiến thẳng nhất để làm điều đó.

var arr = new string[Your_List.Count] 

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

} 
3

ToArray là một phương pháp mở rộng của IEnumerable và IList triển khai IEnumerable. Bạn có thể làm điều đó nếu bạn nhập khẩu đó.

0

thử:

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; 
    } 

của nó chỉ là một thô .May được sự giúp đỡ của nó.

4

Nếu bạn buộc phải có IList, sau đó để có được một mảng ...

IList list; 
var array = new List<string>(list).ToArray() 
Các vấn đề liên quan