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

标签 c# linq

<分区>

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

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

例如:

我想知道它是因为我计划用我自己的方法扩展 Enumerable 扩展方法,当我记得 linq 正在声明具体实现时,我的良好做法告诉我要声明接口(interface)类型。

那我该怎么办呢?声明具体类型还是接口(interface)类型?

最佳答案

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

因为您特别要求列表(使用 ToList)或字典(使用 ToDictionary),所以您得到的是列表/字典的实际实例。

关于c# - 为什么 linq 扩展方法返回具体类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46195168/

相关文章:

c# - 将匿名类型转换为数组或数组列表。可以做吗

c# - 通过 linq 查询过滤组

c# - 将(大型)XML 文件转换为关系 SQL

c# - Windows 8 中不存在 WebClient 类

c# - 如何初始化var?

c# - 根据另一个集合对集合进行排序

.net - 多个后代类型 linq

c# - SignalR 和 c# 导致版本错误

c# - 单例类的几个实例

c# - 我的filterContext.Result的ViewResult什么都不做