Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无法理解接口继承_C# - Fatal编程技术网

C# 无法理解接口继承

C# 无法理解接口继承,c#,C#,下面的代码告诉我一个错误 错误2类型“Series.AB”已包含“B”的定义 我想我可以使用AB类实例作为 IA A=新的AB();或IB B=新的AB();或IAB ab=新ab() 我无法理解这里发生了什么。请描述发生此异常的原因 将属性名称更改为A和B以外的名称,因为方法名称具有相同的名称。在AB类中也有默认构造函数 class AB : IAB { IA instanceA; IB instanceB; public AB(IA _a, IB _b) {

下面的代码告诉我一个错误

错误2类型“Series.AB”已包含“B”的定义

我想我可以使用AB类实例作为

IA A=新的AB();或IB B=新的AB();或IAB ab=新ab()


我无法理解这里发生了什么。请描述发生此异常的原因

将属性名称更改为A和B以外的名称,因为方法名称具有相同的名称。在AB类中也有默认构造函数

class AB : IAB
{
    IA instanceA;
    IB instanceB;
    public AB(IA _a, IB _b)
    {
        instanceA = _a;
        instanceB = _b;
    }

    public void A()
    {
        throw new NotImplementedException();
    }

    public void B()
    {
        throw new NotImplementedException();
    }
}

可能重复:此错误与接口和继承实际上无关。您有一个同名的方法和字段
B
是字段和方法的名称(a也是如此)。这是不允许的。我找到的最接近的副本:。在这两个问题中,OP认为这是另外一个问题。接口IA的可能副本是指向的,并且只能引用一个()方法,类似于IB B()方法。因此,IAB ab应该能够顺利工作。一个可靠的原则是,继承接口的类型必须在整个继承链中提供实现。
class AB : IAB
{
    IA instanceA;
    IB instanceB;
    public AB(IA _a, IB _b)
    {
        instanceA = _a;
        instanceB = _b;
    }

    public void A()
    {
        throw new NotImplementedException();
    }

    public void B()
    {
        throw new NotImplementedException();
    }
}