typeof与GetType区别
typeof与GetType区别
代码如下:
static void Main(string[] args) { object m1 = 1; object m2 = 1;
// ValueType是引用类型,因为它是类,所以返回为false Console.WriteLine(typeof(ValueType).IsValueType); Console.WriteLine(m1.GetType().IsValueType); Console.Read(); }
要想弄明白上面的运行结果,首先我们应该理解typeof与GetType的区别(之前我认为两个的都是一样的,这是一个误区),具体的区别为:
- typeof 是运算符,而 GetType() 是方法
- typeof 获得类型的System.Type对象,GetType()获得当前实例的Type,
- GetType()是基类System.Object的方法,只有建立了一个实例之后才能够被调用
- typeof的参数只能是int, string, class,自定义类型,不能为具体实例,否则编译器会报错
知道它们的区别之后,结果也就很容易得到了,上面程序的运行结果为: