GetType和typeof的区别 以及一个小实例

C# typeof() 和 GetType()区别 总得来说他们都是为了获取某个实例具体引用的数据类型System.Type。 1、GetType()方法继承自Object,所以C#中任何对象都具有GetType()方法,x.GetType(),其中x为变量名,由x实例返回得到一个类型 2、typeof(x)中的x,必须是具体的类名、类型名称等,不可以是变量名称,返回一个类型 3、System.Type.GetType(),有两个重载方法 比如有这样一个变量i: Int32 i = new Int32(); 使用GetType(),i... 阅读详情

 

本文摘自:http://www.cnblogs.com/eagle1986/archive/2011/11/26/2264739.html

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类::

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))
{
//....
}
【OpenClaw从入门到精通】第60篇:多智能体协同实战——用“龙虾”搭建你的数字员工团队(2026企业版) 2026年AI Agent企业落地的核心趋势,正从“单Agent单兵作战”转向“多智能体协同组网”。本文以全球开发者先锋大会“百虾大战”真实案例为蓝本,深度拆解OpenClaw多智能体协同的技术内核——三层解耦架构(模型层-技能层-网关层),系统搭建包含项目经理、架构师、执行者、质量把关者的4大核心Agent团队。通过三种主流协作架构对比、全链路配置代码实操、故障自愈实战演练,结合电商新品上架虚拟场景全流程演示,解决企业多Agent部署中的权限隔离、任务协同、运维自治三大核心痛点。 阅读详情

相关推荐

新手必看:SMIC 0.18um PDK安装保姆级教程(附Cadence IC617环境配置)

本文提供SMIC 0.18um PDK在Cadence IC617环境下的详细安装教程,涵盖环境准备、文件解压、安装脚本运行、环境变量配置及Cadence集成验证等关键步骤,特别针对初学者常见问题提供解决方案,助力快速掌握芯片设计工具配置。

weixin_30522183的博客 493

C# 面试问题高级:013 - typeof 和 GetType 有什么区别 ?

typeof:是一个编译时常量运算符,用于在编译时获取类型的对象。它适用于需要在编译时获取类型信息的场景,如泛型方法和反射 API。GetType:是一个运行时方法,属于类。它用于在运行时动态获取对象的实际类型。适用于需要根据对象的实际类型执行不同操作的场景,如多态编程。编译时 vs 运行时typeof在编译时解析,性能开销小;GetType在运行时解析,可能会有额外的性能开销。

caifox的博客 2039

无人机蜂群联合指挥作战技术详解

随着人工智能、通信技术、新材料等领域的不断进步,无人机蜂群联合指挥作战技术将迎来更加广阔的发展前景。未来,无人机蜂群将更加智能化、自主化,能够执行更加复杂、精细的作战任务。同时,加强国际合作,共同制定国际规则和标准,将是推动无人机蜂群技术健康发展的重要方向。无人机蜂群技术,是指通过先进的通信技术、自主导航与决策算法,将大量小型、低成本、功能各异的无人机组织成一个高度协同的群体,执行复杂多样的军事任务。2. 通信与数据链:采用高速、低延迟、抗干扰的通信技术,保障群体内无人机间的信息交换。

专注多旋翼、复合翼无人机技术研究,从事低空经济行业。 1546

typeof 与GetType()的区别

typeof是运算符,获得某一类型的System.Type对象;GetType是方法,获取当前实例的类型.   一、typeof 与GetType()的区别 1、Typeof是运算符而是方法 2、GetType()是基类System.Object的方法,因此只有建立一个实例之后才能够被调用(初始化以后) 3、Typeof的参数只能是int,string,String,自定义类型,且不能

持之以恒,不需要特别的关注,成为持续不间断的坚持 823

星辰超级智能体TeleClaw桌面版深度体验:央企出品的本地AI生产力助手

中国电信星辰超级智能体TeleClaw桌面版是一款本地化AI生产力助手,主打数据安全、自主高效和深度协同。作为程序员,作者实测其核心功能包括本地数据处理、长期记忆、定时任务和代码开发辅助,特别适合敏感数据处理和日常办公自动化。相比在线AI工具,TeleClaw在数据安全、合规性和自动化能力方面优势明显,但技能生态和响应速度仍有提升空间。总体评价为务实高效的本地AI助手,尤其适合对数据安全有要求的企业用户。

研究中.... 1359

UE5深度图与Mask图渲染实战:从基础到高级应用

本文详细解析了在UE5中渲染深度图与Mask图的完整实战流程。从启用电影渲染队列、配置自定义深度模板通道等前期准备,到构建即用型深度图材质网络与精准物体Mask生成,并深入探讨了二者结合在NPR风格化、程序化雾气及AI工作流(如ComfyUI)中的高级应用,为影视、游戏后期与AI创作提供了高效的解决方案。

weixin_29001419的博客 349

笔记16 C# typeof() & GetType()

C#中任何对象都具有GetType()方法,它的作用和typeof()相同,返回Type类型的当前对象的类型。typeof(x)中的x,必须是具体的类名、类型名称等,不可以是变量名称;GetType()是基类System.Object的方法,因此只有建立一个实例之后才能够被调用 typeof是运算符,获得某一类型的System.Type对象;GetType是方法,获取当前实例的类型. ...

weixin_34128839的博客 476

【高低温试验】试验报告模板

高低温循环试验,验证被测设备(DUT)在极端高温、低温环境下的性能稳定性、功能可靠性及安全性,确保其符合设计规范和相关标准(如GB/T 2423.1、GB/T 2423.2)。:验证设备在剧烈温度变化下的耐受能力(如-40℃↔+85℃,温变速率≥10℃/min)。低温测试标准:GB/T 2423.2-2008(温度-40℃,保持时间4小时):模拟高温高湿环境(如温度+60℃,湿度95%RH),测试防潮性能。

电路巫师把一切不可能变成不可能 1565

GetType和typeof的区别

typeof: The typeof operator is used to obtain the System.Type object for atype. 运算符,获得某一类型的System.Type对象。 Type t = typeof(int); GetType: Gets the Type of the current instance. ...

sinolover的专栏 958

【系统架构设计师-2025上半年真题】综合知识-参考答案及详解(75题完全回忆版)

【系统架构设计师-2025上半年真题】案例分析-参考答案及部分详解

数据知道的博客 1万+

5.1 rocr-runtime libhsakmt event 机制全景—从 Doorbell 到 Signal

本文介绍了ROCm/KFD中的Event机制架构,主要解决GPU异步计算中的反馈问题。Event机制分为三层:硬件层触发事件,内核层管理事件通知,用户态接收处理。事件类型分为三大类:同步类事件(如SIGNAL、QUEUE_EVENT)用于任务完成通知,异常类事件(如MEMORY、HW_EXCEPTION)报告错误,拓扑类事件(如NODECHANGE)处理设备变更。该机制通过共享内存和中断实现高效通信,避免CPU轮询开销。后续文章将深入内核实现、Thunk层封装和多队列完成检测实战。

图形/计算GPU的驱动与虚拟化技术分享园地 1307

System.RuntimeType和type的区别typeof和gettype的区别

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 =...

星河队长 1915

手把手教你学Simulink--人形机器人控制场景实例:基于Simulink的多连杆人形机器人拉格朗日动力学建模仿真

matlab编辑% 连杆长度 (m)% 躯干(髋到CoM)% 大腿% 小腿% 质量 (kg)% 转动惯量(绕质心,简化为杆)matlab编辑% 躯干CoM(假设在髋上方L_body/2处)% 左大腿CoM% 左小腿CoM% (右腿类似,略)本文完成了基于Simulink的多连杆人形机器人拉格朗日动力学建模仿真,实现了:✅ 定义7-DOF平面人形结构✅ 使用Symbolic Math Toolbox自动推导动力学方程✅ 生成。

MHD0815的博客 146

【Unity3D 灵巧小知识点】 ☀️ | GetType和typeof的使用

Unity 小科普 老规矩,先介绍一下 Unity 的科普小知识: Unity是 实时3D互动内容创作和运营平台 。 包括游戏开发、美术、建筑、汽车设计、影视在内的所有创作者,借助 Unity 将创意变成现实。 Unity 平台提供一整套完善的软件解决方案,可用于创作、运营和变现任何实时互动的2D和3D内容,支持平台包括手机、平板电脑、PC、游戏主机、增强现实和虚拟现实设备。 也可以简单把 Unity 理解为一个游戏引擎,可以用来专业制作游戏! Unity小知识点学习 GetType和typeo.

努力前行,总会成为自己心中的那道光 1万+

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

C#如何获取某个对象的类型,以及GetType()与typeof()的区别

C#如何获取某个数据的类型 前言:在学习枚举类型之间的转换时,有时候我们不知道是否转换成我们想要的类型,所以就需要获取转后的类型。但是我也会技术小白,所以就查阅的相关的资料文献,将自己查阅总结的3种方法分享给大家,希望对读者能有一些帮助。 1、使用GetType( )方法 先了解一下GetType( )方法 ​ 1、从图中可以得知Tyoe在英语中是类型的意思。在C#中GetType()方法继承自Object(对象),也就是说类型来自于对象,换句话说C#中的任何对象都具有GetType( )方法。 ​

abraham_ly的博客 3万+

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

java学习——GetType和typeof的区别

java学习——GetType和typeof的区别 区别: 1、Typeof()是运算符而GetType是方法; 2、GetType()是基类System.Object的方法,因此只有建立一个实例之后才能被调用(初始化以后); 3、Typeof()的参数只能是int,String,自定义类型,且不能是实例 4、Typeof():得到一个Class的Type; GetType():得到一个Class...

zhengdadalalala的博客 1万+

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

C#中typeof 与GetType()的区别和methodinfo、memberinfo反射

C#中任何对象都具有GetType()方法,它的作用和typeof()相同,返回Type类型的当前对象的类型。typeof(x)中的x,必须是具体的类名、类型名称等,不可以是变量名称;GetType()是基类System.Object的方法,因此只有建立一个实例之后才能够被调用。      其实我也不会c#。。。我个人的理解就是GetType可以对实例化后的对象进行操作,而typeof则是对类本

yinfourever的专栏 3700

C#中typeof 与GetType()的用法

一、typeof 与GetType()的区别 1、Typeof是运算符而是方法 2、GetType()是基类System.Object的方法,因此只有建立一个实例之后才能够被调用(初始化以后) 3、Typeof的参数只能是int,string,String,自定义类型,且不能是实例 4、GetType()和typeof都返回System.Type的引用.     typeof 与

whaxrl的专栏 1万+

GetType()与Typeof()的区别 举了2个案例

GetType()与Typeof()区别GetType()返回的是对象的类名案例1: int i = 5;Console.WriteLine(i.GetType());//System.Int32var x = 127.25m;Console.WriteLine(x.GetType());//System.Decimal 案例2: namespace _2011._12...

293

typeof()与GetType()简单区别

GetType()获取当前实例的运行时类型, 方法原型为 public System.Type GetType() 属于Object的实例方法即无论是.net框架类库中的类还是用户自己创建的类,都包含此方法使用方法为: 对象名.GetType()示例:using System;using System.Collections.Generic;using System.Tex

wanglong00的专栏 1003
上一篇: IDENT_CURRENT
下一篇: 值类型与引用类型比较与区别
VS_URL
博客等级 码龄15年 12粉丝 29原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值