まとめ
typeof(ISomeInterface).BaseType
ですnull
; 定義によるものtypeof(object).BaseType
でもあります。null
したがって:typeof(object).BaseType==typeof(ISomeInterface).BaseType -> true
それは(意味的に)
System.Object
インターフェースでもあるという意味かもしれませんね。C#では、すべてのクラスはから継承しSystem.Object
ますが、インターフェイスは継承しません。実際、インターフェースはコントラクトであり、クラスの基本型ではなく、他のインターフェースからのみ派生できます。だから私は
typeof(object).BaseType
インターフェイスと同じである必要があるかどうか疑問に思っていますか?説明
私はこれを基本的な数理論理学の方法で考えました。
null
私はととして扱ったので0
、あるタイプの基本タイプを見つけることは、数の因数を見つけることと同じです。typeof(object)
1
この仮定の下では、任意の数の倍数の
null
ように、任意のタイプの派生である可能性があります。0
そして、それ自体でさえ任意の数の要因であるtypeof(object)
ように、任意のクラスの基本タイプになります。1
しかし、実際に戻ってきたということnull
はtypeof(object).BaseType
、この仮定を破りました。これは、それが他の数の要因ではなく0
、要因であると言っているようです。1
さらに、メソッドを使用して
SomeType
再帰的にの基本型を見つける場合、 is 、isでSomeType
あるため、必ずしもクラスではないとは言えません。BaseType
null
typeof(object).BaseType
null
逆説的なようです
typeof(object).BaseType==typeof(object) -> true
その基本タイプがそれ自体であることを示すために、しかしそれはエンティティとコントラクトの正確な違いではありませんか?
アップデート:
私は最初に次のように述べました:
System.Object
インターフェースでもあるのではないでしょうか?
私が言いたいのはそれが混乱しているようだということです。説明が不十分なのは私のせいであり、それに焦点を当てた答えを出して申し訳ありません。