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