【发布时间】:2017-01-01 11:18:49
【问题描述】:
下面的代码给了我错误
错误 2 'Series.AB' 类型已经包含 'B' 的定义
interface IA
{
void A();
}
interface IB
{
void B();
}
interface IAB : IA, IB
{
void A();
void B();
}
class AB : IAB
{
IA A;
IB B;
public AB(IA _a, IB _b)
{
A = _a;
B = _b;
}
public void A()
{
throw new NotImplementedException();
}
public void B()
{
throw new NotImplementedException();
}
}
我认为我可以使用 AB 类实例作为
IA A = 新 AB();或 IB B = 新 AB();或 IAB ab = new AB();
我无法理解这里发生了什么。请任何人描述为什么会发生此异常。
【问题讨论】:
-
这个错误实际上与接口和继承无关。你有一个方法和一个同名的字段。
B是字段和方法的名称(A也是如此)。这是不允许的。 -
我找到的最接近的副本:Already contains a definition for。在任何一个问题中,OP 都认为这是另一回事。
-
接口 IA 指向并且只能引用 A() 方法,类似 IB B() 方法。所以 IAB ab 应该可以顺利工作。一个可靠的原则是继承接口的类型必须提供在整个继承链中实现。
标签: c#