Chuyển đổi mảng chuỗi thành Danh sách <chuỗi>


162

Tôi đã thấy các ví dụ về điều 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 trong .Net 3.5+ . Tôi đang làm việc với .NET Framework 2.0 trên một dự án ASP.NET không thể nâng cấp tại thời điểm này, vì vậy tôi đã tự hỏi: có giải pháp nào khác không? Một thứ thanh lịch hơn là lặp qua mảng và thêm từng phần tử vào Danh sách này (điều này không có vấn đề gì; tôi chỉ tự hỏi liệu có giải pháp nào tốt hơn cho mục đích học tập không)?

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 bổ mảng còn sót lạ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 của bạn arr, người thu gom rác sẽ làm việc đó tốt hơn bạn nhiều.
Mike Christensen

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

@MikeChristensen Không thể cưỡng lại việc nâng cao nhận xét đó cho bình luận của Jon Skeet. lol
Ctrl S

Câu trả lời:


412

Chỉ cần sử dụng hàm tạo này của List<T>. Nó chấp nhận bất kỳ IEnumerable<T>như là một đối số.

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

26

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

Cách sử dụng trông như thế này:

using System.Linq; 

// ...

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

Tái bút Cũng có ToArray()phương pháp hoạt động theo cách khác.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.