实现接口有两种方式:
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
方法之前将其实际转换为给定接口。
如何决定使用哪一个?