我有以下代码:
// IMyInterface.cs
namespace InterfaceNamespace
{
interface IMyInterface
{
void MethodToImplement();
}
}
。
// InterfaceImplementer.cs
class InterfaceImplementer : IMyInterface
{
void IMyInterface.MethodToImplement()
{
Console.WriteLine("MethodToImplement() called.");
}
}
该代码编译得很好(为什么?)。但是,当我尝试使用它时:
// Main.cs
static void Main()
{
InterfaceImplementer iImp = new InterfaceImplementer();
iImp.MethodToImplement();
}
我得到:
即
MethodToImplement
从外部不可见。但是,如果我进行以下更改:// InterfaceImplementer.cs
class InterfaceImplementer : IMyInterface
{
public void MethodToImplement()
{
Console.WriteLine("MethodToImplement() called.");
}
}
然后Main.cs也可以正常编译。为什么两者之间有区别?
最佳答案
通过implementing an interface explicitly,您正在创建一个私有(private)方法,该方法只能通过强制转换为接口(interface)来调用。