Tôi có xu hướng chỉ trả lại IEnumerable<T>
khi tôi muốn gợi ý cho người gọi rằng việc triển khai có thể sử dụng đánh giá lười biếng. Nếu không, tôi thường trả về IList<T>
hoặc ICollection<T>
và triển khai dưới dạng ReadOnlyCollection<T>
nếu kết quả phải là chỉ đọc.
Đánh giá lười biếng có thể là một cân nhắc quan trọng: nếu việc triển khai của bạn có thể ném ngoại lệ, điều này sẽ không bị ném cho đến khi người gọi bắt đầu liệt kê kết quả. Bằng cách trả lại IList<T>
hoặc ICollection<T>
, bạn đảm bảo rằng mọi ngoại lệ sẽ được ném vào thời điểm phương thức được gọi.
Trong trường hợp của phương pháp WCF, trả về IEnumerable<T>
từ phương pháp sử dụng đánh giá lười biếng có nghĩa là bất kỳ ngoại lệ nào cũng không được ném cho đến khi phản hồi của bạn được tuần tự hóa - cho bạn ít cơ hội hơn để xử lý phía máy chủ.
Có lẽ bạn nên thêm ngôn ngữ bạn đang nói đến? Đây không phải là trang web chỉ dành cho mạng. Sau tất cả ... –
Bạn đã đúng. Cảm ơn. – User
Mặc dù đây không phải là bản sao chính xác **, nhưng tôi vẫn khuyên bạn nên xem câu hỏi này: http://stackoverflow.com/questions/1072614/should-i-always-return-ienumerablet-instead-of -ilistt – yas4891