为什么linq扩展方法返回具体类型

时间:2017-09-13 10:31:48

标签: c# linq

我知道在方法签名中声明接口类型而不是具体类型的好处。我们可以在这里找到很多解释,但我不会列出它们,这不是我的问题所在。

我的问题是关于linq。为什么,当我们看到在API的方法签名中声明接口类型是一种更好的做法时,一些linq扩展方法正在返回具体类型?

例如:

我很想知道它,因为我计划用我的拥有者扩展Enumerable扩展方法,并且当我记得linq声明具体的实现时,我的良好实践告诉我声明接口类型。

那我该怎么办?声明具体类型或接口类型?

1 个答案:

答案 0 :(得分:-2)

IList和IDictionary是这些类型在其定义中应包含的接口(蓝图),而不是可用于类实例的实现。

因为您特别要求List(使用ToList)或Dictionary(使用ToDictionary),所以您将获得List / Dictionary的实际实例。