Tôi tò mò nếu có ai có bất kỳ quy tắc hay thực hành tốt nhất nào khi trả lại số hoãn IEnumerable<T>
hoặc gọi ToArray()
trên đó trước khi trả lại một hàm. Ví dụ, như người tiêu dùng của một API, tôi nghĩ rằng tôi muốn cho một phương pháp như IEnumerable<Widget> GetWidgets()
để ném một HttpException
khi tôi gọi nó và không có nó ném khi tôi liệt kê các kết quả.Khi nào biểu mẫu không hợp lệ trả lại số bị hoãn lại là số
public IEnumerable<Widget> GetWidgets(IEnumarable<int> widgetIds) {
return widgetIds.Select(id => GetWidgetFromWidgetWebService(id));
}
Tôi không thể nghĩ ra một lần duy nhất tôi từng muốn trả lại IEnumerable bị trì hoãn và rất nhiều khi tôi đã vô tình thực hiện nó và phá vỡ tất cả các loại mã. – BenCr
Nhưng, không phải ngoại lệ bằng cách ném một trong hai cách? Ít nhất trong trường hợp đó họ sẽ làm việc theo cùng một cách. – rae1
@ rae1n Có, ngoại lệ sẽ được ném theo một trong hai cách, nhưng hãy tưởng tượng một 'IEnumerable 'bị chuyển qua một hoặc hai lớp chỉ để có ngoại lệ được ném vào một trang gọi cách xa nơi bộ sưu tập gốc được trả về. –
joshperry