2012-04-12 50 views
112

Tôi đã xem các ví dụ về việc này được thực hiện bằng cách sử dụng .ToList() trên các loại mảng, điều này dường như chỉ có sẵn in .Net 3.5+. Tôi đang làm việc với NET Framework 2.0 trên một dự án ASP.NET mà không thể được nâng cấp tại thời điểm này, vì vậy tôi đã tự hỏi: là có một giải pháp? Một trong đó là thanh lịch hơn lặp qua mảng và thêm mỗi yếu tố vào Danh sách này (đó là không có vấn đề; Tôi chỉ tự hỏi nếu có một giải pháp tốt hơn cho các mục đích học tập)?Chuyển đổi mảng chuỗi thành Danh sách <string>

string[] arr = { "Alpha", "Beta", "Gamma" }; 

List<string> openItems = new List<string>(); 

foreach (string arrItem in arr) 
{ 
    openItems.Add(arrItem); 
} 

Nếu tôi phải làm theo cách này, có cách nào để phân phối mảng kéo dài khỏi bộ nhớ sau khi tôi sao chép nó vào danh sách của mình không?

+1

Đừng lo lắng về việc dọn dẹp 'arr', bộ thu gom rác sẽ làm tốt hơn rất nhiều so với bạn. –

+4

Tôi đặc biệt .. hoặc nhà phát triển nói chung? –

+29

Bạn đặc biệt. Và tôi. Trong thực tế, tôi nghĩ rằng chỉ Jon Skeet được phép làm bộ sưu tập rác của riêng mình. –

Trả lời

303

Chỉ cần sử dụng this constructor trong số List<T>. Nó chấp nhận bất kỳ đối số IEnumerable<T> nào.

string[] arr = ... 
List<string> list = new List<string>(arr); 
5

Từ .Net 3.5, bạn có thể sử dụng phương pháp mở rộng LINQ (đôi khi) làm cho luồng mã tốt hơn một chút.

Cách sử dụng như sau:

using System.Linq; 

// ... 

public void My() 
{ 
    var myArray = new[] { "abc", "123", "zyx" }; 
    List<string> myList = myArray.ToList(); 
} 

PS. Ngoài ra còn có phương pháp ToArray() hoạt động theo cách khác.

Các vấn đề liên quan