c# - 在 C# 中,为什么接口(interface)实现必须显式实现方法的另一个版本?

标签 c# .net interface explicit-implementation

举个例子:

public interface IFoo
{
    IFoo Bar();
}

public class Foo : IFoo
{
    public Foo Bar()
    {
        //...
    }

    IFoo IFoo.Bar() { return Bar(); } //Why is this necessary?
}

为什么 IFoo Bar() 的隐式实现是必要的,即使 Foo 无需转换就可以转换为 IFoo

最佳答案

在这种情况下需要它,因为 C# 不支持接口(interface)的返回类型协变,所以你的函数

public Foo Bar()
{
    //...
}

不满足IFoo接口(interface),因为Bar方法的返回类型不同。

由于您还想实现该接口(interface),您唯一的选择就是显式实现,因为您已经在类上定义了一个 Bar() 方法。

关于c# - 在 C# 中,为什么接口(interface)实现必须显式实现方法的另一个版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13959920/

相关文章:

java - 如何将接口(interface)添加到包中?

java - 多态性:为什么使用 "List list = new ArrayList"而不是 "ArrayList list = new ArrayList"?

c# - 为什么 MSChart 不填充整个图表区域?

c# - LINQ - 转换为字符串 LIST 并替换字符

c# - lambda在这里的最后一个函数有什么用?

c# - 使用 http 监听器获取端口上的网络流量

asp.net - ASP 5 MVC 6 - 优点和缺点 : multiple web api services - use one or more projects?

.net - 如何在通知区域创建丰富的工具提示和丰富的气球

c# - 使用c#连接到web api

c# - 接口(interface)和基类混合,正确的实现方式