这实际上取决于您为何使用该特定界面。
例如,
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,从而优化了编译后的代码。



