C# 列出 IList 或 IEnumerable 作为参数
Posted
技术标签:
【中文标题】C# 列出 IList 或 IEnumerable 作为参数【英文标题】:C# List IList or IEnumerable as argument 【发布时间】:2018-04-01 18:44:47 【问题描述】:如果我想将 List 作为方法的参数,Resharper 会提示使用 IList 接口可能是一个更好的主意。如果我用 IList 替换 List,Resharper 建议使用 IEnumerable。在 Java 中,我也会将 List 接口而不是 ArrayList 作为参数。但是使用 iEnumerable 作为参数真的很好看吗?如果不需要 IList 或 List 的功能,这是使用 IEnumerable 的好习惯吗?
【问题讨论】:
“如果不需要 IList 或 List 的功能,这是使用 IEnumerable 的好习惯吗?” -- 是的。 是的,因为它打开了您可以传递的内容,例如数组或延迟加载的 Linq 查询。 提供可重用的方法总是好的。如果您要求所有泛型集合的基本接口,您可以将此方法用于多种类型,而不仅仅是列表。IList<T>
涵盖列表和数组,但如果您不需要 IList<T>
的方法,您可以使用 IEnumerable<T>
。
如果您的问题得到了回答,请将其标记为这样。感谢您的支持。
【参考方案1】:
这是the article,它让我改变了主意,让我开始遵循
的原则取最通用的类型,返回最具体的类型
所以回答你的问题
如果不需要 IList 或 List 的功能,这是使用 IEnumerable 的好习惯吗?
是的,是的
注意:不要过度!我见过接受IEnumerable
的代码,如果参数不是List
,则抛出异常。这是愚蠢的。我上面引用的那句话的意思是“不要要求比你需要的更具体”
【讨论】:
以上是关于C# 列出 IList 或 IEnumerable 作为参数的主要内容,如果未能解决你的问题,请参考以下文章
IEnumerable 与 IQueryable 用于业务逻辑或 DAL 返回类型