typeof(T) 与 o.GetType()
typeof(T) versus o.GetType()
一个方法
public void Foo<T>(T o)
{
var oType = o.GetType();
var tType = typeof(T);
}
在选择使用哪一个(功能性或非功能性)时,我应该考虑什么?
来自 Jon 的回答。
我创建了一个 fiddle 来演示它:
当然:您应该考虑是否希望结果类型匹配参数的静态类型或运行时类型。
在您的典型用例中,这可能是同一类型,但不能想当然。例如:
Foo<object>(string.Empty); // oType = string, tType = object
此外,在一般情况下你必须小心不要打电话
GetType
于 null
。
一个方法
public void Foo<T>(T o)
{
var oType = o.GetType();
var tType = typeof(T);
}
在选择使用哪一个(功能性或非功能性)时,我应该考虑什么?
来自 Jon
我创建了一个 fiddle 来演示它:
当然:您应该考虑是否希望结果类型匹配参数的静态类型或运行时类型。
在您的典型用例中,这可能是同一类型,但不能想当然。例如:
Foo<object>(string.Empty); // oType = string, tType = object
此外,在一般情况下你必须小心不要打电话
GetType
于 null
。