13
C#編譯器似乎明確注意到它和它的基類實現的所有接口。 CLI規範說這不是必需的。我見過一些其他編譯器沒有明確地發佈這個,它似乎工作正常。 C#執行此操作有什麼區別或原因嗎?爲什麼C#編譯器顯式聲明一個類型實現的所有接口?
的MSIL的C#在底部產生用於B爲:
.class private auto ansi beforefieldinit B
extends A
implements IAdvanced,
ISimple
它不應該需要指定ISimple,因爲A一樣IAdvanced實現它。 C#代碼:
interface ISimple {
int Basic { get; }
int Zero { get; }
}
interface IAdvanced : ISimple {
string Major { get; }
}
class A : ISimple {
int ISimple.Basic {
get { return 1; }
}
int ISimple.Zero {
get{ return 0;}
}
}
class B : A, IAdvanced {
string IAdvanced.Major {
get { return "B"; }
}
}
IIRC,一切都在規範中明確定義。所以這裏沒有猜測。 – leppie 2009-04-17 06:39:22