【发布时间】:2014-01-23 22:02:19
【问题描述】:
最近有朋友问我,为什么Dictionary<T, V> 已经被IDictionary<T,V> 继承了,却要显式实现ICollection<KeyValuePair<T, V>>?
我意识到我也不知道答案。以下是官方文档的链接:
Dictionary<T, V> - http://msdn.microsoft.com/en-us/library/xfhwa508(v=vs.110).aspx
IDictionary<T,V> - http://msdn.microsoft.com/en-us/library/s4ys34ea(v=vs.110).aspx
这样做有什么具体原因吗?是否有特定的架构模式或任何东西?
【问题讨论】:
-
您无法从文档中看到这一点 - 它显示了所有接口,无论它们是如何实现的。
-
如果您在谈论显式实现的方法,这些方法是显式的,以避免在类本身上显示它们,而不是因为与
IDictionary有任何关系。 -
@CodesInChaos 看了你的评论后的源代码,但和文档是一样的。
-
@Selman22 您是指显式列出要从中派生的接口,还是显式实现接口方法?如果接口在 IL 中列出,因此可以在反编译器中看到,这可能是 CIL 和 C# 编译器如何工作的工件。如果它在 ROTOR 源代码中,那么它是 Microsoft 的风格选择,对编译的程序没有影响。
标签: c# .net dictionary