我知道在方法签名中声明接口类型而不是具体类型的好处。我们可以在这里找到很多解释,我不会列出,这不是我问题的重点。
我的问题是关于linq的。为什么,当我们看到为API在方法签名中声明接口类型是一个更好的实践时,一些linq扩展方法正在返回具体类型?
例如:
ToList()返回一个List<>而不是一个IList<>。ToDictionary()返回一个Dictionary<>而不是一个IDictionary<>我想知道,因为我计划用我自己的扩展方法来扩展可枚举的扩展方法,当我想起linq正在声明具体的实现时,我的良好实践就是告诉我声明接口类型。
那我该怎么办?声明具体类型还是接口类型?
发布于 2017-09-13 10:39:58
IList和IDictionary是这些类型应该包含在定义中的接口(蓝图),而不是可以用于类实例的实现。
因为您专门要求一个列表(用ToList)或字典(用ToDictionary),所以您得到了List/Dictionary的一个实际实例。
https://stackoverflow.com/questions/46195168
复制相似问题