返回类型为 IEnumerable<T>

30
使用 IEnumerable<T> 作为返回类型是否存在问题? FxCop会警告返回 List<T>(建议返回 Collection<T>)。
我一直遵循一个准则:“接收最少,但返回最多”。
从这个角度来看,返回 IEnumerable<T> 是不好的,但是当我想要使用“惰性检索”时该怎么办?此外,yield 关键字非常棒。
11个回答

0

我认为你自己的指导很好——如果你能更具体地说明你要返回什么,而不会影响性能(例如,你不必将结果构建成列表),那就这样做。但是,如果你的函数确实不知道它将找到什么类型,比如在某些情况下你将使用列表,在某些情况下你将使用数组等等,那么返回IEnumerable就是你所能做的“最好”的选择。把它看作是你可能想要返回的所有内容的“最大公约数”。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接