C# 显式接口派生:私有方法可作为公共方法访问

C# 显式接口派生:私有方法可作为公共方法访问,c#,C#,我在理解一些C代码时遇到问题:) 我有两个接口IClassB和IClass,每个接口都有一个方法,不管名称和签名如何。我在做类C,它显式地实现了IClassB,隐式地实现了IClassA。所以我有代码: public class ClassC: IClassA, IClassB { void IClassB.methodForClassB() { Console.WriteLine("method for explicit

我在理解一些C代码时遇到问题:)

我有两个接口IClassB和IClass,每个接口都有一个方法,不管名称和签名如何。我在做类C,它显式地实现了IClassB,隐式地实现了IClassA。所以我有代码:

 public class ClassC: IClassA, IClassB
        {
        void IClassB.methodForClassB()
        {
            Console.WriteLine("method for explicit implementation");
        }

        public void methodForClassA()
        { 
            Console.WriteLine("method for implicit implementation");
        }
    }
如您所见:方法void IClassB.methodForClassB()是私有的(不是吗?)。 但是当我使用这个ClassC对象时,我可以调用methodForClassB方法,因为它是一个公共方法。怎么解释呢

ClassC classC = new ClassC();

IClassB classB = new ClassC();
classB.methodForClassB();*

((IClassB)classC).methodForClassB();
关于

显式接口成员实现包含访问修饰符是编译时错误,包含抽象、虚拟、重写或静态修饰符是编译时错误


这些方法必须通过对接口的引用来访问,并且它们与接口本身具有相同的访问级别(无论是
公共的
还是
内部的
)。

接口的全部要点是能够调用其方法(另请参见Liskov替换原则)。你不能那样做。