c#界面问题

Can*_*ner 7 c# inheritance interface

我有以下代码:

// IMyInterface.cs

namespace InterfaceNamespace
{
    interface IMyInterface
    {
        void MethodToImplement();
    }
}
Run Code Online (Sandbox Code Playgroud)

.

// InterfaceImplementer.cs
class InterfaceImplementer : IMyInterface
{
    void IMyInterface.MethodToImplement()
    {
        Console.WriteLine("MethodToImplement() called.");
    }
}
Run Code Online (Sandbox Code Playgroud)

这段代码编译得很好(为什么?).但是,当我尝试使用它时:

// Main.cs

    static void Main()
    {
        InterfaceImplementer iImp = new InterfaceImplementer();
        iImp.MethodToImplement();
    }
Run Code Online (Sandbox Code Playgroud)

我明白了:

InterfaceImplementer does not contain a definition for 'MethodToImplement'
Run Code Online (Sandbox Code Playgroud)

MethodToImplement从外面看不到.但是,如果我做了以下更改:

// InterfaceImplementer.cs
class InterfaceImplementer : IMyInterface
{

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

然后Main.cs编译也很好.为什么这两者之间有区别?

SLa*_*aks 6

通过显式实现接口,您将创建一个只能通过强制转换到接口来调用的私有方法.