2
我碰到这在C#4.0中意外地来了,当我试图实现与抽象类的嵌套接口:嵌套接口和抽象实现类
public class A
{
public interface InnerInterface
{
void Method();
}
}
public abstract class B : A.InnerInterface
{
public abstract void A.InnerInterface.Method();
}
public class C : B
{
public override void A.InnerInterface.Method()
{
System.Console.WriteLine("C::A.InnerInterface.Method()");
}
}
不幸的是,上面的代码无法编译,用下面的错误:
错误CS0106:修饰语“抽象”是无效的这个项目
错误CS0106:修饰词“公众”并不适用于这个项目
错误CS0106:修饰语“覆盖”是不适用于这个项目
错误CS0106:修饰词“公众”并不适用于这个项目
但是如果界面是不是非这样的接口,像这样:
public interface SomeInterface
{
void Method();
}
public abstract class B : SomeInterface
{
public abstract void Method();
}
public class C : B
{
public override void Method()
{
System.Console.WriteLine("C::Method()");
}
}
它编译好。
为什么编译器在第一种情况下出错?我在这里错过了什么吗?还是不允许用抽象类实现嵌套接口?
谢谢。不知道C#中有隐式/显式接口实现 –