欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

GetType和typeof的区别

发布时间:2023/12/10 36 豆豆
生活随笔 收集整理的这篇文章主要介绍了 GetType和typeof的区别 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

typeof: The typeof operator is used to obtain the System.Type object for a type.

 

运算符,获得某一类型的 System.Type 对象。

 

Type t = typeof(int);

 

 

 

GetType: Gets the Type of the current instance.

 

            方法,获取当前实例的类型

 

             int i = 10;
Console.WriteLine(i.GetType());

 

 

区别:

 

  • Typeof()是运算符而GetType是方法
  • GetType()是基类System.Object的方法,因此只有建立一个实例之后才能够被调用(初始化以后)
  • Typeof()的参数只能是int,string,String,自定义类型,且不能是实例

     

  • GetType() 和typeof()都返回System.Type的引用。

     

    TypeOf() 和GetType()的区别:  

    (1)TypeOf():得到一个Class的Type

    (2)GetType():得到一个Class的实例的Type

    override 一个方法的前担是这个方法在父类中:abstract or  virtual, override

 

 

 

GetType()方法的小使用

GetType():获取当前实例的System.Type.

 现在有两个类:Student 和 StudentDTO如下:

Student类::

public class Student
    {
        public Student()
        { 
        
        }

        public virtual string Id { get; set; }

        public virtual string StudentNo { get; set; }

        public virtual string Name { get; set; }

        public virtual string ClassId { get; set; }

        public virtual string ProfessionId { get; set; }

        public virtual string CollegeId { get; set; }

        public virtual int Phone { get; set; }

        public virtual int Sex { get; set; }

        public virtual string Address { get; set; }
    }

StudentDTO类:

public class StudentDTO
    {
       public StudentDTO()
       { 

       }
       public virtual string Id { get; set; }

       public virtual string StudentNo { get; set; }

       public virtual string Name { get; set; }

       public virtual string ClassId { get; set; }

       public virtual string ProfessionId { get; set; }

       public virtual string CollegeId { get; set; }

       public virtual int Phone { get; set; }

       public virtual int Sex { get; set; }

       public virtual int TeacherId { get; set; }
    }

现在创建一个Student:

            Student student = new Student();
            student.Id = Guid.NewGuid().ToString();
            student.Name = "张三";
            student.StudentNo = "T001";
            student.Phone = 10086;
            student.Sex = 1;
            student.CollegeId = Guid.NewGuid().ToString();
            student.ClassId = Guid.NewGuid().ToString();
            student.ProfessionId = Guid.NewGuid().ToString();
            student.Address = "福建";

现在创建一个Student的DTO类StudentDTO并把Student的信息赋给StudentDTO,常用的方法是:

            StudentDTO studentDTO = new StudentDTO();
            studentDTO.Id = student.Id;
            studentDTO.Name = student.Name;
            studentDTO.StudentNo = student.StudentNo;
            studentDTO.Phone = student.Phone;
            studentDTO.Sex = student.Sex;
            studentDTO.CollegeId = student.CollegeId;
            studentDTO.ClassId = student.ClassId;
            studentDTO.ProfessionId = student.ProfessionId; 

而使用GetType()也可以实现:

            foreach (var item in student.GetType().GetProperties())    //返回Student的所有公共属性
            {
                var value = item.GetValue(student, null);   //返回属性值    
                var setobj = studentDTO.GetType().GetProperty(item.Name);   //搜索具有指定属性名称的公共属性
                if (value != null && setobj != null)
                {
                    setobj.SetValue(studentDTO, value, null);
                }
            }

 

这样看起来代码会简洁些......呵呵,只是个人感觉这个GetType()方法挺好用的就记录起来了.......

 

在利用多态性时,GetType()是一个有用的方法,允许根据对象的类型来执行不同的代码,而不是像通常那样,对所有的对象都执行相同的代码,

例如,如果一个函数接受一个object类型的参数,就可以在遇到某些对象时执行额外的任务,联合使用getype() 和 typeof() ,就可以进行比较,如下所示:

 

if(myobj.GetType() == typeof(MyComplexClass))

{

//....

}

总结

以上是生活随笔为你收集整理的GetType和typeof的区别的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。