c# 之 System.Type.GetType()與Object.GetType()與typeof比較


Object.GetType()與typeof的區別

//運算符,獲得某一類型的 System.Type 對象。
Type t = typeof(int);

//方法,獲取當前實例的類型。
 int i = 10;
Console.WriteLine(i.GetType());
//區別
Typeof()是運算符而GetType是方法
GetType()是基類System.Object的方法,因此只有建立一個實例之后才能被調用(也就是創建實例)
Typeof()的參數只能是lint,string,類,且不能是實例
得到結果的區別
(1)Typeof():得到一個class的Type
(2)GetType():得到一個class實例的Type

System.Type.GetType()的使用

Type type = System.Type.GetType("ConsoleApplication1.child");
Type type1 = System.Type.GetType("System.Int32");

 

Object.GetType()的小案例

public class Student
    {
        public Student()
        { 
        
        }
        public virtual string Id { get; set; }
        public virtual string StudentNo { get; set; }
        public virtual string Address { get; set; }
    }

public class StudentDTO
    {
       public StudentDTO()
       { 

       }
       public virtual string Id { get; set; }
       public virtual string StudentNo { get; set; }
       public virtual int TeacherId { get; set; }
    }
//對student對象賦值
         Student student = new Student();
            student.Id = Guid.NewGuid().ToString();
            student.Name = "張三";
            student.Address = "福建";
//將student的值賦予studentdto
         StudentDTO studentDTO = new StudentDTO();
            studentDTO.Id = student.Id;
            studentDTO.Name = student.Name;

改進:若是student的屬性過多,那么可以通過此方法減少許多代碼
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);
                }
            }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM