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");
    }
}

这种区别的用例或好处是什么?我真的需要在实现类时区分抽象方法吗?

C# 中显式接口实现的优点是什么?

在您的情况下,没有真正的好处,实际上拥有两种这样的方法只会让用户感到困惑。但是,当您有以下情况时,它们是关键:

interface IVehicle
{
    CarDetails IdentifySelf();    
}
interface IRobot
{
    string IdentifySelf();
}

现在我们有两个同名但返回类型不同的方法。因此,它们不能被重载(重载时忽略返回类型),但可以显式引用它们:

class TransformingRobot : IRobot, IVehicle
{
    string IRobot.IdentifySelf()
    {
        return "Robot";
    }
    CarDetails IVehicle.IdentifySelf()
    {
        return new CarDetails("Vehicle");
    }
}