<分区>
我知道在方法签名中声明接口(interface)类型而不是具体类型的好处。我们可以在这里找到很多解释,我不会列出它们,这不是我问题的重点。
我的问题是关于 linq 的。为什么当我们看到在 API 的方法签名中声明接口(interface)类型是一种更好的做法时,一些 linq 扩展方法正在返回具体类型?
例如:
-
ToList()
返回List<>
而不是IList<>
. -
ToDictionary()
返回Dictionary<>
而不是IDictionary<>
- 等等
我想知道它是因为我计划用我自己的方法扩展 Enumerable 扩展方法,当我记得 linq 正在声明具体实现时,我的良好做法告诉我要声明接口(interface)类型。
那我该怎么办呢?声明具体类型还是接口(interface)类型?