2010-07-12 38 views
18

Bất cứ ai cũng có thể cho tôi biết khi nào tôi nên sử dụng.Tôi nên sử dụng IEnumerable hoặc IList?

Ví dụ: tôi nghĩ tôi nên sử dụng IList khi tôi muốn truy cập .Count của bộ sưu tập hoặc một mục riêng lẻ, đúng không?

Cảm ơn bạn.

Trả lời

37

Nói chung, bạn nên thử và sử dụng các loại cụ thể nhất đó phù hợp với mục đích của bạn. IEnumerable là ít cụ thể hơn IList (IList thực hiện IEnumerable) vì vậy trừ khi bạn muốn một cái gì đó cụ thể từ IList (như .Count như bạn đề nghị, hoặc có lẽ Add, Delete, vv), tôi muốn sử dụng IEnumerable. Một trong những bổ sung tốt đẹp bạn nhận được từ ở trên IEnumerable là bạn có thể viết các phương thức iterator để trả về kiểu này (tra cứu "lợi nhuận" và các phương thức lặp nếu bạn không quen thuộc với chúng). Điều này cho phép bạn viết các "đường ống" hiệu quả về bộ nhớ cho các vòng lặp của bạn.

+2

Tôi đồng ý với việc sử dụng loại có nguồn gốc ít nhất. ICollection <> là đủ cho hầu hết việc thêm/xóa. –

+0

@Mark H - điểm tốt - đối với hầu hết các hoạt động thêm/xóa, ngay cả IList là không nhất thiết cụ thể. –

+0

IList * thực hiện * IEnumerable ?! –

3

Bạn nên sử dụng IList khi bạn cần truy cập bởi chỉ số vào bộ sưu tập của bạn, thêm và xóa các yếu tố, vv, và IEnumerable khi bạn cần chỉ liệt kê trên bộ sưu tập của bạn.

Câu trả lời rất đơn giản, tôi có thể mở rộng câu trả lời nếu bạn mô tả tình huống của bạn.

Các vấn đề liên quan