我很好奇,如果有任何人有任何经验法则或最佳实践,在返回延迟IEnumerable<T>或ToArray()在从函数返回它之前调用它是有意义的.
例如,作为一个API的消费者,我认为我更喜欢一个方法,比如当我调用它时IEnumerable<Widget> GetWidgets()抛出一个方法HttpException而不是在我枚举结果时抛出它.
public IEnumerable<Widget> GetWidgets(IEnumarable<int> widgetIds) {
return widgetIds.Select(id => GetWidgetFromWidgetWebService(id));
}
Run Code Online (Sandbox Code Playgroud)
我总是喜欢在延迟IEnumerable<T>没有明显副作用的情况下返回延期.例如,如果可枚举基于可能会发生变化的内部集合,我宁愿首先对其进行评估.
但是,如果计算可枚举数等,那么我通常会推迟它.