RuntimeTypeHandle と Type の違いは何ですか?
-
09-06-2019 - |
質問
コード内で一方を他方よりも優先して使用するのはなぜでしょうか?
解決
注意:この回答は古いようです。 これは .NET 4 が利用可能になる前に投稿されたもので、明らかにいくつかの最適化が導入されました。
Type
したがって、この回答の情報は廃止されました。見る これより最近の答え 詳細については。
によると Vance Morrison によるこのブログ投稿 (2006 年から), RuntimeTypeHandle
値型 (struct
) これはアンマネージ ポインターをラップします。 Type.GetTypeHandle(obj).Equals(anotherHandle)
厳密な「まったく同じ型である」比較に使用する方が、 obj.GetType().Equals(anotherType)
— 後者は作成します System.Type
明らかに重いインスタンスです。
ただし、これはそれほど明白ではなく、間違いなく「マイクロ最適化」のカテゴリに分類されるため、どちらが必要か迷っている場合は、おそらく System.Type を使用する必要があります。
他のヒント
.NET 4.0 ベータ 1 では RuntimeTypeHandle
ただ包むだけ RuntimeType
. 。安価なものとして使用するメリットはすべてあるようです Type
代理人がいなくなった。
上記の主張の証拠:
- マイクロソフトの の参照元
System.RuntimeTypeHandle
タイプ この型が実際には単なるラッパーであることを示していますSystem.RuntimeType
最近。 - Sandro Magi の 2013 年のブログ記事「CLR:動的型テストのコスト」 ベンチマークと、想定されるパフォーマンス上の利点を示す最後のメモが含まれています。
RuntimeTypeHandle
.NET 4 ではなくなりました。
所属していません StackOverflow