1

我试图了解接口的继承是如何工作的。当一个接口继承另一个接口但有一个具有相同签名的方法时,编译器会发出警告,指出基成员被隐藏(这似乎合乎逻辑)。

但是,当我稍后在一个类中实现子接口时,我必须实现具有相同签名的父接口和子接口方法,这让我感到困惑......我认为当父成员隐藏时我需要实现只有子接口方法?

(我在查看IEnumerableIEnumerable<T>界面时遇到了这个问题)

interface IMyBase
{
    int DoSomething();
}

interface IMyDerived:IMyBase
{
    int DoSomething();
}


class myClass : IMyDerived
{
    int IMyDerived.DoSomething()
    {
        throw new NotImplementedException();
    }

    int IMyBase.DoSomething()
    {
        throw new NotImplementedException();
    }
}
4

1 回答 1

1

我必须实现具有相同签名的父接口方法和子接口方法,这让我感到困惑

那么,如果你这样做,你期望会发生什么?

IMyBase x = new myClass();

x.DoSomething();

有两种方法,IMyBase.SomethingIMyDerived.Something,两者都必须存在,因为两者都可以调用。myClass仍然实现IMyBase,接口没有以任何方式隐藏。

于 2017-09-22T09:20:37.180 回答