Кто-нибудь знает какие-либо различия между typeof(T) where T : struct
, , например, t.GetType() where t is a System.Object
?
ILdasm показывает, что typeof (T) использует System.Type::GetTypeFromHandle(RuntimeTypeHandle handle)
, а другой - просто System.Object::GetType()
. Реализации являются [MethodImpl(MethodImplOptions.InternalCall)]
, , поэтому методы определены в собственном коде в среде CLR. Итак, мне просто интересно, знает ли кто-нибудь о какой-либо причине, предпочитающей друг друга?typeof (T) vs. Object.GetType() performance
EDIT: Позвольте мне пояснить, меня интересуют в основном случаи, когда кажется, что вы не выбрали - то есть, есть разница в производительности или по любой другой причине? Благодаря!
Если вы знаете статически (во время компиляции) какой тип вы хотите, используйте typeof. В противном случае используйте GetType(), чтобы получить его во время выполнения. –
Я понял, что perf of typeof (T) будет лучше Object.GetType(), но на самом деле он, вероятно, совершенно незначителен. –
Возможный дубликат [Тип Проверка: typeof, GetType или есть?] (Http://stackoverflow.com/questions/983030/type-checking-typeof-gettype-or-is) – Amicable