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); } }