List<string> list = new List<string>() {"a", "b", "c"};
IEnumerable<string> enumerable = list;
int c1 = list.Count;
int c2 = list.Count();
int c3 = enumerable.Count();
Có sự khác biệt về hiệu suất và triển khai giữa 3 câu lệnh cuối cùng này không? Sẽ list.Count()
hoạt động kém hơn hoặc giống như list.Count
và có quan trọng nếu tham chiếu thuộc loại IEnumerable<string>
?Có sự khác biệt giữa Count() (phần mở rộng LINQ) và Danh sách <T> .Count
Nếu IEnumerable là một ICollection (chẳng hạn như danh sách) do đó có thuộc tính .Count thì Linq sử dụng điều này làm lối tắt khi bạn sử dụng phương thức .Count(). Điều này có nghĩa là bất cứ điều gì bạn sử dụng không thực sự quan trọng. – Dolbz
Điều này là sai. Count() được mã hóa để nó chỉ lặp lại để đếm nếu phần tử bạn đang gọi Count() không thực hiện chính ICollection. –