Hãy xem xét bit này của mã bị xáo trộn. Mục đích là tạo một đối tượng mới khi đang chạy qua hàm tạo ẩn danh và yield return
nó. Mục đích là để tránh phải duy trì một bộ sưu tập địa phương chỉ đơn giản là return
nó.C#: lợi tức lợi nhuận trong vòng foreach thất bại - nội dung không thể là khối lặp lại
public static List<DesktopComputer> BuildComputerAssets()
{
List<string> idTags = GetComputerIdTags();
foreach (var pcTag in idTags)
{
yield return new DesktopComputer() {AssetTag= pcTag
, Description = "PC " + pcTag
, AcquireDate = DateTime.Now
};
}
}
Thật không may, chút mã này tạo ra một ngoại lệ:
Lỗi 28 Phần nội dung của 'Foo.BuildComputerAssets()' không thể là một khối iterator vì 'System.Collections.Generic.List' không phải là một loại giao diện iterator
Câu hỏi
- Thông báo lỗi này có ý nghĩa gì?
- Làm cách nào để tránh lỗi này và sử dụng
yield return
đúng cách?