我想知道是否有任何关于何时返回延迟的 IEnumerable<T>
或在从函数返回之前调用 ToArray()
的经验法则或最佳实践。
例如,作为 API 的使用者,我认为像 IEnumerable<Widget> GetWidgets()
这样的方法在我调用它时抛出 HttpException
而不是在枚举结果时抛出会更好。
public IEnumerable<Widget> GetWidgets(IEnumarable<int> widgetIds) {
return widgetIds.Select(id => GetWidgetFromWidgetWebService(id));
}
IEnumerable<Widget>
被传递了一两层,只有在远离原始集合返回的地方调用时才抛出异常。 - joshperryIEnumerable<Widget>
被迭代时,它将调用GetWidgetFromWidgetWebService()
,因此每次枚举器的迭代都有可能抛出异常。 - joshperry