当我编写自己的DAL或返回一组项目的其他代码时,我应该始终执行return语句:
public IEnumerable<FooBar> GetRecentItems()
要么
public IList<FooBar> GetRecentItems()
当前,在我的代码中,我一直在尝试尽可能多地使用IEnumerable,但是我不确定这是否是最佳实践吗?这似乎是正确的,因为我在返回最通用的数据类型的同时仍对其功能进行了描述,但这也许是不正确的。
这实际上取决于您为何使用该特定界面。
例如,IList<T>有几种方法是不存在的IEnumerable<T>:
IList<T>
IEnumerable<T>
IndexOf(T item)
Insert(int index, T item)
RemoveAt(int index)
和属性:
T this[int index] { get; set; }
如果您以任何方式需要这些方法,则一定要返回IList<T>。
此外,如果使用IEnumerable<T>结果的方法期望使用IList<T>,则它将避免考虑任何所需的转换而节省CLR,从而优化了编译后的代码。