小编eta*_*sov的帖子

为什么C#中的基类允许实现接口契约而不继承它?

我偶然发现了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.

这魔术背后的原因是什么?

恕我直言:这种"准实现"功能非常不直观,使代码检查更加困难.你怎么看?

c# interface base-class

18
推荐指数
2
解决办法
3638
查看次数

标签 统计

base-class ×1

c# ×1

interface ×1