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#中有隱式/顯式接口實現 –