typeof(T)与o.GetType()

时间:2015-01-17 23:43:32

标签: .net performance generics

方法

public void Foo<T>(T o)
{
    var oType = o.GetType();
    var tType = typeof(T);
}

在选择使用哪一种功能性功能或非功能性时,我应该考虑什么?

来自Jon below的答案。

我创造了一个小提琴演示它:

https://dotnetfiddle.net/Y4bAGf

1 个答案:

答案 0 :(得分:5)

当然:您应该考虑是否希望结果类型与参数的静态或运行时类型匹配。

这可能与您的典型用例中的类型相同,但不能认为这是理所当然的。例如:

Foo<object>(string.Empty); // oType = string, tType = object

此外,在一般情况下,你必须小心不要打电话 GetType上的null