为什么Dictionary <T,V>显式实现ICollection <KeyValuePair <T,V >>,当它已被IDictionary <T,V>继承时

Ser*_*gei 6 .net c# dictionary

最近我的朋友问我为什么在它已经被继承时Dictionary<T, V>显式实现?ICollection<KeyValuePair<T, V>>IDictionary<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

有没有具体的理由为什么这样做?是否有特定的架构模式或任何东西?

Eni*_*ity 9

这似乎只是隐式显示所有已实现接口的情况.

我做了以下示例来测试它.我的源代码是:

public class Class1 : ITest
{
    public void Testing()
    {
        Console.WriteLine("Test");
    }

    public void Testing2()
    {
        Console.WriteLine("Test2");
    }
}

public interface ITest : ITest2
{
    void Testing();
}

public interface ITest2
{
    void Testing2();
}
Run Code Online (Sandbox Code Playgroud)

现在进入Reflector.Net并反编译我得到这个:

public class Class1 : ITest, ITest2
{
    public void Testing()
    {
        Console.WriteLine("Test");
    }

    public void Testing2()
    {
        Console.WriteLine("Test2");
    }
}
Run Code Online (Sandbox Code Playgroud)