C#中typeof和GetType的使用区别

最近使用了获取类的类型typeof,后来发现还有GetType方法可以使用,分不清楚他们两的区别,特意查了一下,下面内容介绍一下两者的区别和使用案例,分析给大家。

在C#中的所有类型都在运行时由System.Type的实例表示,可以用两种基本方法来获取System.Type对象,那么就是typeof和GetType,他们都可以获取System.Type对象,它们只有使用区别,具体区别如下:.

1、GetType只能在运行时计算;而typeof 在编译时被静态计算。
typeof 在编译完程序就计算完成,而GetType只在程序运行的时候执行。
2、在实例上调用GetType,实例化后通过变量名称调用;‍typeof运算符通过类型名称计算出类型
他们计算后的类型都是Type类型,可以计算出类型名称,程序集,基本类型等属性。

使用案例:

     //案例类     public class Customer     {         public int id { get; set; }         public string name { get; set; }      }     static void  Main(string[] args)     {            Customer customer = new Customer()            {                id = 2,                name = "张学友",            };            Console.WriteLine(customer.GetType().Name); // Customer             Console.WriteLine(typeof(Customer).Name); // Point             //他们是等效的,只不过运行的环节不同            Console.WriteLine(customer.GetType() == typeof(Customer)); //true            //显示全名,包括命名空间,下面必须赋值后才能使用            Console.WriteLine(customer.name.GetType().FullName); // System.String            Console.WriteLine(customer.age.GetType().Name); // Int32 
            //另一种使用,从var获取变量类型,这个只支持GetType()            var name = "dotnet开发跳槽";            Type typename = name.GetType();            Console.WriteLine(typename);//全名:System.String            Console.WriteLine(typename.Name);//String    }    //输出Customer,Customerture,System.String,Int32 ,System.String,String

结语

    本文介绍了typeof和GetType的使用区别, 希望本文对大家学习和工作有一定参考价值,谢谢大家的支持。