我有以下代码:
// 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();
}
我得到:
InterfaceImplementer does not contain a definition for 'MethodToImplement'
即MethodToImplement
从外部不可见。但是,如果我进行以下更改:
// InterfaceImplementer.cs
class InterfaceImplementer : IMyInterface
{
public void MethodToImplement()
{
Console.WriteLine("MethodToImplement() called.");
}
}
然后 Main.cs 也可以正常编译。为什么两者之间存在差异?
最佳答案
通过 implementing an interface explicitly ,您正在创建一个只能通过强制转换为接口(interface)来调用的私有(private)方法。
关于c#接口(interface)问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6043869/