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():获取当前实例的System.Type.
现在有两个类:Student 和 StudentDTO如下:
Student类::
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类:
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:
=
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,常用的方法是:
=
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()方法挺好用的就记录起来了…….
转载于:https://www.cnblogs.com/eagle1986/archive/2011/11/26/2264739.html
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/110509.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...