typeof(T)与o.GetType()

Ban*_*San 4 .net generics performance

对于一种方法

public void Foo<T>(T o)
{
    var oType = o.GetType();
    var tType = typeof(T);
}
Run Code Online (Sandbox Code Playgroud)

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

乔恩的 回答如下.

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

https://dotnetfiddle.net/Y4bAGf

Jon*_*Jon 5

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

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

Foo<object>(string.Empty); // oType = string, tType = object
Run Code Online (Sandbox Code Playgroud)

此外,在一般情况下,你必须要小心,不要叫 GetType上null.