Hiểu Sự Khác Biệt Giữa IEnumerable, ICollection, IList và List
November 3, 2024Khi làm việc với các tập hợp (collections) trong C#, việc chọn đúng kiểu dữ liệu là vô cùng quan trọng dựa trên yêu cầu cụ thể. Dưới đây là sự khác biệt giữa các kiểu IEnumerable, ICollection, IList, và List:
1. IEnumerable
• Mục đích: Đại diện cho một tập hợp chỉ có thể duyệt qua theo chiều thuận (read-only, forward-only).
• Sử dụng phổ biến: Lý tưởng khi duyệt qua một tập hợp bằng vòng lặp foreach.
• Không thể thay đổi: Không cho phép thêm, xóa, hoặc thay đổi phần tử.
• Ví dụ: Các truy vấn LINQ thường trả về IEnumerable.
2. ICollection
• Mục đích: Mở rộng IEnumerable với các tính năng bổ sung như thêm, xóa và kiểm tra kích thước của tập hợp.
• Hỗ trợ thêm/xóa: Không giống như IEnumerable, bạn có thể thay đổi tập hợp.
• Sử dụng khi: Bạn cần thao tác tập hợp nhưng không cần truy cập phần tử theo chỉ số.
3. IList
• Mục đích: Mở rộng ICollection với khả năng truy cập phần tử bằng chỉ số.
• Hỗ trợ chỉ số: Bạn có thể truy cập và thay đổi các phần tử thông qua chỉ số, giống như một mảng.
• Sử dụng khi: Bạn cần truy cập trực tiếp đến các phần tử thông qua chỉ số và có khả năng thay đổi tập hợp.
4. List
• Mục đích: Một triển khai cụ thể của IList.
• Nhiều tính năng nhất: Cung cấp đầy đủ các tính năng của IList, ICollection và IEnumerable.
• Kích thước động: Tự động điều chỉnh kích thước khi thêm hoặc xóa phần tử.
• Sử dụng khi: Bạn cần một tập hợp có khả năng thay đổi kích thước và hỗ trợ đầy đủ các thao tác chỉnh sửa và truy cập theo chỉ số.
Tóm lại:
• IEnumerable: Chỉ đọc, dùng để duyệt qua các phần tử.
• ICollection: Thêm khả năng thao tác (thêm/xóa) phần tử trong tập hợp.
• IList: Hỗ trợ truy cập theo chỉ số và thao tác trên tập hợp.
• List: Triển khai đầy đủ tất cả các tính năng với khả năng thay đổi kích thước linh hoạt.