隐式接口继承

本文关键字:继承 接口 | 更新日期: 2023-09-27 18:28:34

我只是想知道我们现在在ExampleClass中实际使用的是这两个方法中的哪一个,来自IFirstInterface的bool IsReal()还是ISecondInterface:

interface IFirstInterface
{
    bool IsReal(); 
}
interface ISecondInterface
{
    bool IsReal();
}

public class ExampleClass : IFirstInterface, ISecondInterface
{
    public bool IsReal() {}
    //public bool IsReal is IFirstInterface or ISecondInterface method.
}

有人能解释一下隐式接口在C#中是如何工作的吗。

隐式接口继承

在Explicit Interface Implementation指南中,您可以阅读以下语句:

如果一个类实现了两个接口,其中包含具有相同的签名,则在类上实现该成员将导致两个接口都使用该成员作为其实现。

您可以显式地实现一个或两个接口来覆盖此行为:

interface IFirstInterface
{
    bool IsReal(); 
}
interface ISecondInterface
{
    bool IsReal();
}
public class ExampleClass : IFirstInterface, ISecondInterface
{
    // will be used for IFirstInterface
    bool IFirstInterface.IsReal(){}
    // will be used for ISecondInterface
    public bool IsReal(){}
}

为了清晰起见,您应该实现这两个函数公共布尔IFirstInterface.IsReal(){}public bool ISecondInterface.IsReal(){}