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