13
C#コンパイラは、すべてのインターフェイスとその基本クラスが明示的に記述されているようです。 CLIの仕様では、これは必要ではないと言われています。私はいくつかのコンパイラがこれを明示的に発行していないのを見てきました。 C#がこれを行うのに違いがあるのでしょうか?底部のC#はBのために生成するC#コンパイラは、型が実装するすべてのインタフェースを明示的に宣言するのはなぜですか?
MSILである:
.class private auto ansi beforefieldinit B
extends A
implements IAdvanced,
ISimple
それはIAdvancedが行うようにAがそれを実現するため、ISimpleを指定する必要はありません。 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
私は3番ドアに行きます! ;-) – peSHIr
さて、CLI仕様のパーティションIIは、それが必須ではないことを明確にしています。私はそれが実際に何かを追加すると言ったかどうかは分かりませんでした。 – MichaelGG