C# 中显式接口实现的优点是什么?
本文关键字:是什么 显式接口实现 | 更新日期: 2023-09-27 17:56:42
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");
}
}
这种区别的用例或好处是什么?我真的需要在实现类时区分抽象方法吗?
在您的情况下,没有真正的好处,实际上拥有两种这样的方法只会让用户感到困惑。但是,当您有以下情况时,它们是关键:
interface IVehicle
{
CarDetails IdentifySelf();
}
interface IRobot
{
string IdentifySelf();
}
现在我们有两个同名但返回类型不同的方法。因此,它们不能被重载(重载时忽略返回类型),但可以显式引用它们:
class TransformingRobot : IRobot, IVehicle
{
string IRobot.IdentifySelf()
{
return "Robot";
}
CarDetails IVehicle.IdentifySelf()
{
return new CarDetails("Vehicle");
}
}