.net typeof(T)与o.GetType()
寻找一种方法.net typeof(T)与o.GetType(),.net,performance,generics,.net,Performance,Generics,寻找一种方法 public void Foo<T>(T o) { var oType = o.GetType(); var tType = typeof(T); } public void Foo(to) { var oType=o.GetType(); var tType=类型(T); } 在选择哪一个使用时,我应该考虑什么,功能性的还是非功能性的? 回答来自 我制作了一把小提琴来演示: 当然,您应该考虑是否希望得到的类型与参数的静态或运行时类型匹配。 这在您的
public void Foo<T>(T o)
{
var oType = o.GetType();
var tType = typeof(T);
}
public void Foo(to)
{
var oType=o.GetType();
var tType=类型(T);
}
在选择哪一个使用时,我应该考虑什么,功能性的还是非功能性的?
回答来自
我制作了一把小提琴来演示:
当然,您应该考虑是否希望得到的类型与参数的静态或运行时类型匹配。 这在您的典型用例中可能是相同的类型,但这不能被认为是理所当然的。例如:
Foo<object>(string.Empty); // oType = string, tType = object
Foo(string.Empty);//oType=string,tType=object
此外,在一般情况下,你必须小心不要打电话
GetType
onnull
只是澄清一下,tType
是动态类型,oType
是静态类型?@BanksySan:不,反过来说。静态类型是编译器所知道的(T),运行时我们的动态类型是您可能传入的任何类型(可以是一种直到编译此代码之后才被写入的类型)。