实现接口有两种方式:
interface IMyInterface
{
void Foo();
}
class IImplementAnInterface : IMyInterface
{
public void Foo()
{
}
}
// var foo = new IImplementAnInterface();
// foo.Foo(); //Ok
// ((IMyInterface)foo).Foo(); //Ok
class IExplicitlyImplementAnInterface : IMyInterface
{
void IMyInterface.Foo()
{
}
}
// var foo = new IExplicitlyImplementAnInterface();
// foo.Foo(); //ERROR!
// ((IMyInterface)foo).Foo(); //Ok
区别在于,如果接口被显式实现,那么在允许调用Foo
方法之前,它必须实际上被转换为给定的接口。
如何决定使用哪种方式?
public
是无效的。你不需要访问修饰符,因为显式实现的接口成员会自动变为private
。 - Mark H