【发布时间】:2017-09-22 09:15:46
【问题描述】:
我试图了解接口的继承是如何工作的。当一个接口继承了另一个接口但有一个具有相同签名的方法时,编译器会给出一个警告,指出基成员是隐藏的(这似乎是合乎逻辑的)。
但是,当我稍后在一个类中实现子接口时,我必须实现具有相同签名的父接口和子接口方法,这让我感到困惑......我认为当父成员被隐藏时,我会只需要实现子接口方法吗?
(我在查看IEnumerable 和IEnumerable<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();
}
}
【问题讨论】:
-
你明确地实现了接口。在这种情况下,继承是不可能的。
-
接口成员无法隐藏没有类
-
只是不要将
DoSomething()放在IMyDerived中,它已经从IMyBase继承了它。把它放在这个界面中会增加零值。我真的很惊讶编译器没有抱怨这个?我希望至少有一个警告。
标签: c# interface method-hiding