C#支持用于区分具有相同名称的方法的内置机制。下面是一个简单的示例,说明了它的工作原理:
interface IVehicle{
//identify vehicle by model, make, year
void IdentifySelf();
}
interface IRobot{
//identify robot by name
void IdentifySelf();
}
class TransformingRobot : IRobot, IVehicle{
void IRobot.IdentifySelf(){
Console.WriteLine("Robot");
}
void IVehicle.IdentifySelf(){
Console.WriteLine("Vehicle");
}
}
这种区别的用例或好处是什么?我是否真的需要在实现类时区分抽象方法?
答案 0 :(得分:1)
在你的情况下,没有真正的好处,实际上有两个这样的方法只会让用户感到困惑。但是,当你有:
时,它们是关键interface IVehicle
{
CarDetails IdentifySelf();
}
interface IRobot
{
string IdentifySelf();
}
现在我们有两个同名的方法,但返回类型不同。因此它们不能被重载(重载忽略返回类型),但可以显式引用它们:
class TransformingRobot : IRobot, IVehicle
{
string IRobot.IdentifySelf()
{
return "Robot";
}
CarDetails IVehicle.IdentifySelf()
{
return new CarDetails("Vehicle");
}
}