В чем разница между RuntimeTypeHandle и Type? - PullRequest
15 голосов
/ 02 сентября 2008

А зачем мне использовать один над другим в моем коде?

Ответы [ 2 ]

10 голосов
/ 02 сентября 2008

Внимание. Этот ответ устарел. Он был опубликован до того, как стал доступен .NET 4, что, по-видимому, привело к некоторой оптимизации в отношении Type и, таким образом, сделало информацию в этом ответе устаревшей. См. этот более свежий ответ для подробностей.

Согласно этой записи в блоге (с 2006 г.) Вэнса Моррисона , RuntimeTypeHandle - это тип значения (struct), который переносит неуправляемый указатель, поэтому Type.GetTypeHandle(obj).Equals(anotherHandle) быстрее использовать для строгого Сравнения "абсолютно одинакового типа", чем obj.GetType().Equals(anotherType) & mdash; последний создает System.Type экземпляров, которые, по-видимому, тяжелее.

Однако это также менее очевидно и определенно подпадает под категорию «микрооптимизация», поэтому, если вам интересно, когда вам нужно одно поверх другого, вам, вероятно, следует просто использовать System.Type.

6 голосов
/ 17 сентября 2009

В .NET 4.0 Beta 1 RuntimeTypeHandle просто переносит RuntimeType. Кажется, все преимущества использования его в качестве дешевого Type прокси прошли.

Подтверждение вышеуказанной претензии:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...