星空网 > 软件开发 > ASP.net

【C#进阶系列】05 基元类型、引用类型和值类型

 基元类型和FCL类型

FCL类型就是指Int32这种类型,这是CLR支持的类型。

而基元类型就是指int这种类型,这是C#编译器支持的,实际上在编译后,还是会被转为Int32类型。

而且学过C的朋友肯定记得,int在32位机器和64位机器字节数可能不同,但是C#.NET里int就是表示Int32。

因为在基元类型和FCL类型之间,有一个一一对应的映射关系。另外注意dynamic实际上对应的类型就是Object,只是说C#编译器允许用简单的语法让dynamic变量参与动态调度。

表达式由字面量构成,编译器在编译的时候就能完成表达式求值

Boolean found=false;//生成的代码将found设为0Int32 x=100+20+3;//x设为123String a="a"+"bc";//s设为“abc”

checked和unchecked基元类型操作

此指令就用来检查溢出和不检查溢出,而默认是unchecked,不过这个可以改。检查溢出就报异常,不检查溢出就回滚。

引用类型和值类型

所谓值类型的去看它们类型的定义,比如Int32和DayOfWeek都是struct和enum类型,而struct类型实际上派生自System.ValueType类型,而Enum类型派生自System.Enum类型。而Enum类型最终还是派生自System.ValueType类型。

好吧,他们俩个的差异性其实还是蛮多的,不过基本上这是最基础的了,而且基本上是本书就讲,所以反而懒得写了。

装箱与拆箱

装箱就是把本来在栈中的值类型,在堆中新开辟一个内存空间,把值类型的数据复制进去,并增加引用类型都有的类型指针和同步块索引,然后返回这个内存空间引用地址。

拆箱就是反过来,先获取装箱对象中各个字段的地址,再将这些字段包含的值从堆复制到栈。

由上面看出装箱拆箱其实很影响效率,所以写代码的时候应该避免。

——未完待续




原标题:【C#进阶系列】05 基元类型、引用类型和值类型

关键词:C#

C#
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

倍思特海外仓:https://www.goluckyvip.com/tag/28965.html
倍速浏览器:https://www.goluckyvip.com/tag/28966.html
倍速论坛:https://www.goluckyvip.com/tag/28967.html
倍速社区:https://www.goluckyvip.com/tag/28968.html
被fba跟卖:https://www.goluckyvip.com/tag/28969.html
本地信用证:https://www.goluckyvip.com/tag/28971.html
一夜之间大批卖家货物被偷,又迎大量Listing将被下架!跨境赚钱"好日子"到头了?:https://www.goluckyvip.com/news/220219.html
晚上沈阳市区哪里好玩的地方 晚上沈阳有什么好玩的地方:https://www.vstour.cn/a/410235.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流