我偶然发现了C#的这个"特性" - 实现接口方法的基类不必从它派生.
例:
public interface IContract
{
void Func();
}
// Note that Base does **not** derive from IContract
public abstract class Base
{
public void Func()
{
Console.WriteLine("Base.Func");
}
}
// Note that Derived does *not* provide implementation for IContract
public class Derived : Base, IContract
{
}
Run Code Online (Sandbox Code Playgroud)
会发生什么事情,Derived神奇地采用公共方法Base.Func,并决定它将实施IContract.Func.
这魔术背后的原因是什么?
恕我直言:这种"准实现"功能非常不直观,使代码检查更加困难.你怎么看?