Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net typeof(T)与o.GetType()_.net_Performance_Generics - Fatal编程技术网

.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
on
null

只是澄清一下,
tType
是动态类型,
oType
是静态类型?@BanksySan:不,反过来说。静态类型是编译器所知道的(T),运行时我们的动态类型是您可能传入的任何类型(可以是一种直到编译此代码之后才被写入的类型)。