Khi sử dụng ToList(), có một tác động hiệu suất cần được xem xét?
Tôi đã viết một truy vấn để lấy các tập tin từ một thư mục, đó là truy vấn:
string[] imageArray = Directory.GetFiles(directory);
Tuy nhiên, vì tôi thích làm việc List<>thay vào đó, tôi quyết định đưa vào ...
List<string> imageList = Directory.GetFiles(directory).ToList();
Vì vậy, có một số loại tác động hiệu suất nên được xem xét khi quyết định thực hiện chuyển đổi như thế này - hoặc chỉ được xem xét khi xử lý một số lượng lớn tệp? Đây có phải là một chuyển đổi không đáng kể?
Addhoặc Remove, tôi sẽ để nó dưới dạng IEnumerable<T>(hoặc thậm chí tốt hơn var)
EnumerateFilesthay vì GetFilesvậy, chỉ có một mảng sẽ được tạo.
GetFiles(directory), vì nó được triển khai trong .NET hiện tại, khá nhiều new List<string>(EnumerateFiles(directory)).ToArray(). Vì vậy, GetFiles(directory).ToList()tạo một danh sách, tạo một mảng từ đó, sau đó tạo lại một danh sách. Giống như 2kay nói, bạn nên thích làm EnumerateFiles(directory).ToList()ở đây.
List<T>trong lợi của mộtT[]nếu nó làm cho mã logic hơn / dễ đọc / bảo trì (tất nhiên trừ việc chuyển đổi đã gây chú ý vấn đề hiệu suất trong trường hợp này tôi muốn tái thăm nó tôi đoán).