C#中的接口是否可能出现钻石问题?

时间:2018-10-08 07:47:11

标签: c# inheritance interface abstract-class

下面的代码中是否存在体系结构问题?所谓的diamond problem是否可能出现界面或类似问题?

interface IComponent
{
    void DoStuff();
}

interface ITitledComponent : IComponent
{
    string Title { get; }
}

abstract class ComponentBase : IComponent
{
    public void DoStuff()
    {
        throw new NotImplementedException();
    }
}

class MyComponent : ComponentBase, ITitledComponent
{
    public string Title => throw new NotImplementedException();
}

当然,钻石类的继承是一个错误的决定,而在C#中是不可能的。但是关于接口我找不到信息。

1 个答案:

答案 0 :(得分:3)

不,用C#不可能产生钻石问题,因为您只能从一个类继承。接口不是继承的,而是实现的。因此,对于编译器和编码器来说,具有方法的两种实现并且不知道为特定类选择哪种方法的实际问题永远不会发生。