可空类型(C Sharp)
来源:互联网 发布:百度一下淘宝商城 编辑:程序博客网 时间:2024/06/05 16:53
1. Int ? num = null;
2. 可空类型的来源
3. 可空类型的定义:
代码参见文件夹里的Demo。
代码的运行结果:
介绍两个方法:
1. Nullable<T>.GetValueOrDefault方法(不带参数)
其返回值:
自己理解的返回值:
返回当前值或者默认值0。
2. Nullable<T>.GetValueOrDefault(T)方法(带参数)
其返回值:
自己理解的返回值:
返回当前值或者默认值T。
3. Nullable<T>.GetHashCode方法
返回值:
如果HasValue的属性为真,则返回对象的哈希代码。如果为假的,则返回0。
4. 可空类型的装箱和拆箱
值类型存在装箱和拆箱的过程,可空类型也属于值类型,从而也有装箱和拆箱的过程的。
装箱指的的从值类型到引用类型的过程,拆箱当然也就是装箱的反过程,即从引用类型到值类型的过程。
(这里进一步解释下我理解的装箱和拆箱,首先.Net中值类型是分配在堆栈上的,然而引用类型分配在托管堆上,装箱过程就是把值类型的值从推栈上拷贝到托管堆上,然后推栈上存储的是对托管堆上拷贝值的引用,然而拆箱就是把托管堆上的值拷贝到堆栈上.简单一句话概况,装箱和拆箱就是一个值的拷贝的一个过程,就想搬家一样,把东西从一个地方搬到另一个地方,对于深入的理解,大家可以参考下园中的博文.)。
5. 可空类型的装箱和拆箱
当把一个可空类型赋给一个引用类型变量时,此时CLR 会对可空类型(Nullable<T>)对象进行装箱处理,首先CLR会检测可空类型是否为null,如果为null,CLR则不进行实际的装箱操作(因为null可以直接赋给一个引用类型变量),如果不为null,CLR会从可空类型对象中获取值,并对该值进行装箱(这个过程就是值类型的装箱过程了。),当把一个已装箱的值类型赋给一个可空类型变量时,此时CLR会对已装箱的值类型进行拆箱处理,如果已装箱值类型的引用为null,此时CLR会把可空类型设为null。
代码详见文件里的Demo1:
主函数如下:
子函数如下:
定义可空类型的变量:
获得可空对象的类型:
将可空类型装箱操作:
装箱后的引用类型的类型:(依然是整形32bit)
拆箱为非可空变量:
拆箱为可空变量:
装箱为一个没有值的可空类型的对象:
拆箱为可空变量:
6. 程序运行结果:
- 可空类型(C Sharp)
- 【C#】可空类型
- c sharp 类型基础
- 深入理解C#---1.可空类型
- C Sharp入门——值类型
- C#可空类型
- C# 可空类型
- C#可空类型
- c# 可空类型
- C#可空类型
- 可空类型
- 可空类型 ?和??
- 可空类型:
- C#可空类型
- 可空类型
- 可空类型用法
- C#可空类型
- C#可空类型
- Linux下更改转移mysql数据库目录
- iOS安全系列之 HTTPS
- 批量添加删除EC2资源的TAG
- *+html功能
- Linux内核:写proc文件的返回值问题
- 可空类型(C Sharp)
- Android中对日期进行排序
- 用Properties加载“ .properties "文件产生的java.lang.NullPointerException的解决之道
- DoubleLinkedList独立实现,不依赖任何包
- Problem E: 二维数组中的查找
- java虚拟机
- C++对象模型——"无继承"情况下的对象构造(第五章)
- Web安全测试之跨站请求伪造(CSRF)
- eclipse编译数学函数库