C#基础知识之GetType与typeof的区别小结

在实际开发中经常需要了解具体对象的类型,所以经常会使用GetType()和typeof()、尽管可以得到相应的类型、但两者之间也存在一些差别,接下来我们一起来了解一下吧。

一、GetType()与typeof()

1、typeof():typeof 运算符用于获取某个类型的 System.Type实例。 typeof 运算符的实参必须是类型或类型形参的名称,如以下示例所示:控制台输出:

Console.WriteLine($"得到类型为:{typeof(int)}");
Console.WriteLine($"得到类型为:{typeof(string)}");

2、GetType():GetType()方法继承自Object,所以C#中任何对象都具有GetType()方法,它的作用和typeof()相同,返回Type类型的当前对象的类型并控制台输出:

int i = 1;
var iresult = i.GetType();
Console.WriteLine($"得到类型为:{iresult}");

就拿Int类型来说两者都是返回System.Int32、但是使用的方式却不同?那如果采用typeof(iresult)来获取结果呢?答案是不能、如下所示

由此可知使用typeof()来获取类型时、只能传入具体的类型如int、string、或者自定义类型等等、使用GetType()则是获取当前对象、实例的具体类型。

二、总结

1.Gettype()是从System.Object中继承的方法,返回值为type类型当前对象的类型;typeof(XX)是运算符,XX必须是具体的类名、类型名称等,不可以是变量名。

2.Gettype()必须是创建具体的对象(实例)才能使用,

3.typeof()的参数只能是int,string 等类型及自定义类型,不能是实例。

4.Gettype返回的是实例的type(类型),而typeof返回的是Class(类)的类型

以上就是两者的区别、在使用的过程当中可以留意两者的区别

到此这篇关于C#基础知识之GetType与typeof区别的文章就介绍到这了,更多相关C# GetType与typeof区别内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • c#中GetType()与Typeof()的区别

    案例1: 复制代码 代码如下: int i = 5;Console.WriteLine(i.GetType());//System.Int32var x = 127.25m;Console.WriteLine(x.GetType());//System.Decimal 案例2: 复制代码 代码如下: namespace _2011._12._15{    class Program    {        static void Main(string[] args)        {     

  • C#基础知识之GetType与typeof的区别小结

    在实际开发中经常需要了解具体对象的类型,所以经常会使用GetType()和typeof().尽管可以得到相应的类型.但两者之间也存在一些差别,接下来我们一起来了解一下吧. 一.GetType()与typeof() 1.typeof():typeof 运算符用于获取某个类型的 System.Type实例. typeof 运算符的实参必须是类型或类型形参的名称,如以下示例所示:控制台输出: Console.WriteLine($"得到类型为:{typeof(int)}"); Console

  • iOS基础知识之@property 和 Ivar 的区别

    @property 属性其实是对成员变量的一种封装.我们先大概这样理解: @property = Ivar + setter + getter Ivar Ivar可以理解为类中的一个变量,主要作用是用来保存数据的. 我们不妨来看个例子,通过下边的例子能够很清楚的解释这两个东东: 我们新建一个Person类 @interface Person : NSObject { NSString *name0; } @property(nonatomic,copy)NSString *name1; @end

  • JavaScript常用基础知识强化学习

    首先,还是用比较官方的文字描述来解释下JavaScript: JavaScript一种直译式脚本语言,是一种动态类型.弱类型.基于原型的语言,内置支持类型.它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在HTML(标准通用标记语言下的一个应用)网页上使用,用来给HTML网页增加动态功能. JavaScript拥有以下几个特点: · 脚本语言.JavaScript是一种解释型的脚本语言,C.C++等语言先编译后执行,而JavaScript是在程序的运行

  • PowerShell面向对象编程基础知识总结

    本文介绍PowerShell面向对象编程的基础知识,我们知道PowerShell里面的所有变量和输出都是对象,所以有必要在进行PowerShell编程时了解一下面向对象编程的基础知识. 面向对象编程的引入主要是为了解决软件复杂化带来的维护等问题,早在20世纪60年代,面向对象就已经出现了.虽然C语言并不支持面向对象的特性,但是使用C语言进行开发的程序人员已经将面向对象的核心思想应用到其中,因此我们更应该理解的是面向对象的思想,而不需要纠缠于语言本身. PowerShell是基于对象的脚本语言,因

  • 浅谈javascript中关于日期和时间的基础知识

    前面的话 在介绍Date对象之前,首先要先了解关于日期和时间的一些知识.比如,闰年.UTC等等.深入了解这些,有助于更好地理解javascript中的Date对象.本文将介绍javascript关于日期和时间的基础知识 标准时间一般而言的标准时间是指GMT和UTC,以前是GMT,现在是UTC GMT 格林尼治标准时间(GMT)是指位于伦敦郊区的皇家格林尼治天文台的标准时间,因为本初子午线被定义在通过那里的经线 理论上来说,格林尼治标准时间的正午是指当太阳横穿格林尼治子午线时(也就是在格林尼治上空

  • .Net Core 3.1 Web API基础知识详解(收藏)

    目录 一.前言 二.Swagger调试Web API 三.配置文件 四.文件上传 五.统一WebApi数据返回格式 六.模型验证 七.日志使用 八.依赖注入 九.缓存 十.异常处理 十一.应用安全与JWT认证 十二.跨域 一.前言 随着近几年前后端分离.微服务等模式的兴起,.Net Core也似有如火如荼之势 ,自16年发布第一个版本到19年底的3.1 LTS版本,以及将发布的.NET 5,.NET Core一路更迭,在部署和开发工具上也都支持了跨平台应用.一直对.Net Core有所关注,但未

  • vue3基础知识剖析

    目录 声明 vue3.0有哪些新特性 vue3.0的优缺点 如何解锁vue3.0 体验vue3.0的4中姿势 核心的composition API setup setup语法糖 ref.reactive watch跟watchEffect computed(计算属性) 组件通信 props emit 插槽 vue2中的使用 vue3中的使用 生命周期 vue-router 4.0 Composition API 路由守卫 keep-alive 和 transition 必须用在 router-v

  • AngularJS实用基础知识_入门必备篇(推荐)

    前言 今天来和大家学习一下AngularJS-- AngularJS 通过新的属性和表达式扩展了 HTML. AngularJS 可以构建一个单一页面应用程序. AngularJS 学习起来非常简单. 一.AngularJS指令与表达式 [AngularJS常用指令] 1.ng-app:声明Angular所管辖的区域,一般写在body或HTML上,原则上一个页面只有一个. 2.ng-model:把元素值(比如输入域的值)绑定到应用程序的变量中. eg:<input type="text&q

  • AngularJS 最常用的八种功能(基础知识)

    AngularJS 使用基础知识 第一 迭代输出之ng-repeat标签 ng-repeat让table ul ol等标签和js里的数组完美结合 <ul> <li ng-repeat="person in persons"> {{person.name}} is {{person.age}} years old. </li> </ul> 你甚至可以指定输出的顺序: <li ng-repeat="person in pers

随机推荐