Подтвердить что ты не робот

В чем разница между RuntimeTypeHandle и Type?

И почему я должен использовать один из них в моем коде?

4b9b3361

Ответ 1

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

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

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

Ответ 2

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

Доказательства для вышеуказанного утверждения: