use*_*949 20 .net c# typeof gettype
可能重复:
类型检查:typeof,GetType还是?
获得该类型的首选方法是哪一种?
Jon*_*eet 26
您只能typeof()在编译时知道该类型时使用,并且您正在尝试获取相应的Type对象.(尽管类型可以是泛型类型参数,例如typeof(T)在具有类型参数的类中T.)不需要使用该类型的任何实例typeof.操作数typeof始终是类型或类型参数的名称.它不能是变量或类似的东西.
现在比较一下object.GetType().这将获得它被调用的对象的实际类型.这意味着:
GetType上)一个奇怪的观点:GetType由于拳击工作的方式,将对可空值类型给出意想不到的答案.调用GetType将始终涉及装箱任何值类型,包括可空值类型,并且可空值类型的装箱值是空引用或对非可空值类型的实例的引用.
GetType()在运行时工作,typeof()是编译时运算符.
所以,
// untested, schematic
void ShowType(Object x)
{
Write(x.GetType().Name); // depends on actual type
// typeof(x) won't actually compile
Write(typeof(x).Name); // always System.Object
}
ShowType("test");
Run Code Online (Sandbox Code Playgroud)
将打印System.String和System.Object.
请参阅此问题以获得更好的示例.