首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >linq扩展方法返回混凝土类型的原因

linq扩展方法返回混凝土类型的原因
EN

Stack Overflow用户
提问于 2017-09-13 10:31:47
回答 1查看 83关注 0票数 3

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

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

例如:

  • ToList()返回一个List<>而不是一个IList<>
  • ToDictionary()返回一个Dictionary<>而不是一个IDictionary<>

我想知道,因为我计划用我自己的扩展方法来扩展可枚举的扩展方法,当我想起linq正在声明具体的实现时,我的良好实践就是告诉我声明接口类型。

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

EN

回答 1

Stack Overflow用户

发布于 2017-09-13 10:39:58

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

因为您专门要求一个列表(用ToList)或字典(用ToDictionary),所以您得到了List/Dictionary的一个实际实例。

票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46195168

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档