3

このStackOverflow questionに対する受け入れられた回答によると、System.Type.Equalsメソッドと次の違いがありSystem.Type operator ==ます。

a runtime type (represented by the internal type RuntimeType), managed by 
the CLR is not always the same as a Type, which can be extended. Equals 
will check the underlying system type, whereas == will check the type itself.

.NET for Windows Store Appsでは、System.Type 演算子 ==は使用できません。

System.Type operator ==の機能をWindows ストア アプリケーションで完全に再現するにはどうすればよいですか? または、特定の等値演算子の機能は、 Windows ストア アプリSystem.Typeとは関係ありませんか?

4

1 に答える 1

5

したがって、ここでの基本的な原則はEquals、すべての型の仮想インスタンス メソッドであるということです。つまり、vtable を使用して、呼び出した実際のオブジェクトの型に基づいて、実行時に使用する実装を決定しますEquals(変数の型は無視します)。 .

operator ==静的メソッド (多くのオーバーロードを含む) と考えることができます。仮想ではないため、参照される実装は、オブジェクトを保持する変数のコンパイル時の型に基づいており、実行時のオブジェクトの実際の型には基づいていません。

static Equalsこの動作は、2 つの引数の型に基づいて動作する独自のメソッドを (好きな型で)作成するだけで複製できます。これは、 を使用するよりも入力するのが少し不便ですoperator ==が、一度コンパイルすると効果的に同じことを行います。

于 2013-02-19T15:06:34.090 に答える