.Net C# 中可为空值类型 ?
在C# 中的可为空值类型表示除了可以接收原有值类型外还可以接收NULL值
例如:int? a =1; int? b=null;
在使用可为空值类型时可以配合 条件运算符 ?? (没错,就是两个问号!)配合使用。
例如:int? a =1; int b= a ?? 1;
这种方式需要指定为NULL时的默认值。
放一段代码用于演示的更直观;
//值类型和可为空值类型正常赋值,需要指定为空时的默认值int? a = 111;int b = a ?? 1;Console.WriteLine($"a 等于 {a},b 等于 {b}");int? c = null;int d = c ?? 1;Console.WriteLine($"c 等于 {c},d 等于 {d}");//不指定默认值时,可以使用GetValueOrDefault()获取该值类型默认值int? e = null;int f = e.GetValueOrDefault();Console.WriteLine($"e 等于 {e},f 等于 {f}");
执行结果如下图:
在使用逻辑运算符进行运算时也需要注意和基础值类型不一样的地方,如以下代码;
//在逻辑运算符中需要注意如下场景int? g = 222;int? h = null;int? j = null;Console.WriteLine($"g > h 等于{g > h}");Console.WriteLine($"g < h 等于{g < h}");Console.WriteLine($"g == h 等于{g == h}");Console.WriteLine($"g >= h 等于{g >= h}");Console.WriteLine($"g <= h 等于{g <= h}");Console.WriteLine($"j > h 等于{j > h}");Console.WriteLine($"j < h 等于{j < h}");Console.WriteLine($"j == h 等于{j == h}");Console.WriteLine($"j >= h 等于{j >= h}");Console.WriteLine($"j <= h 等于{j <= h}");
执行结果如下图;
可为空值类型应用场景:
1.在进行非空判断时,只需要一段通用代码即可,而无需再单独为值类型数据进行单独处理。
可为空值类型 使用注意事项:
1.不要调用 GetType() 方法获取类型实例,该操作会导致 装箱操作。获取类型实例请使用 typeof()关键字进行。
2.不要使用 is 运算符 判断 int 或 int? ,is 运算符无法区分。请使用 Nullable.GetUnderlyingType(typeof())方法判断是否是 可为空值类型。
.Net C# 中可为空值类型 ?相关推荐
- .NET中可空值类型实现原理
为了让.Net中的值类型可以赋值为null,微软特地添加了Nullable<T>类型,也可简写为T?.但是Nullable<T>自身是结构体,也是值类型,那么它是如何实现将nu ...
- python空类型用什么表示_python中怎么表示空值
首先了解python对象的概念 python中,万物皆对象,所有的操作都是针对对象的. 那什么是对象?5是一个int对象,'oblong'是一个str对象,异常也是一个对象,抽象一点是,人,猫,够也是 ...
- python中表示空类型的是_python中怎么表示空值
首先了解python对象的概念 python中,万物皆对象,所有的操作都是针对对象的. 那什么是对象?5是一个int对象,'oblong'是一个str对象,异常也是一个对象,抽象一点是,人,猫,够也是 ...
- mysql timestamp json_mysql中timestamp,datetime,int类型的区别与优劣
mysql中timestamp,datetime,int类型的区别与优劣 int 1. 占用4个字节 2. 建立索引之后,查询速度快 3. 条件范围搜索可以使用使用between 4. 不能使用mys ...
- NET CLR via c# 第4版笔记 第19章 可空值类型
System.Nullable<T> 是结构. 19.1 C# 对可空值类型的支持 C# 允许用问号表示法来声明可空值类型,如: Int32? x = 5;Int32? y = null; ...
- python中关键字 表示空类型_python中什么表示空类型
python中什么表示空类型? python中None表示空类型.表示该值是一个空对象,空值是Python里一个特殊的值,用None表示.None不能理解为0,因为0是有意义的,而None是一个特殊的 ...
- java char类型空值_展望Java的未来:空值类型
java char类型空值 尽管有前途的Java值类型不是迫在眉睫,但我偶尔还是喜欢在OpenJDK valhalla-dev邮件列表中打听一下,以了解事情的进展情况并了解即将发生的事情. 诚然,由于 ...
- 展望Java的未来:空值类型
尽管有前途的Java值类型不是迫在眉睫,但我偶尔还是喜欢在OpenJDK valhalla-dev邮件列表中打听一下,以了解事情的进展情况并了解即将发生的事情. 诚然,由于我对所用术语的了解有限,并且 ...
- C#复习笔记(3)--C#2:解决C#1的问题(可空值类型)
可空值类型 C#2推出可空类型来表示可以为null的值类型.这是一个呼声很高的需求,因为在常用的数据库中都是允许某些值类型可为空的.那么为什么值类型就不能为空呢?内存中用一个全0的值来表示null,但 ...
最新文章
- 使用哈工大LTP进行文本命名实体识别并保存到txt
- VC下提前注入进程的一些方法2——远线程带参数
- 操作系统重点快览第四章
- SpringMVC 学习-异常处理 SimpleMappingExceptionResolver 类
- StratifiedShuffleSplit 交叉验证
- centos8配置本地光盘yum源_CentOS8 配置本地yum源的详细教程
- 盒子模型阴影设置,爱奇艺阴影配置
- Android开发学习之路-机器学习库(图像识别)、百度翻译
- linux端口连通性测试telnet、wget、ssh、curl
- android 高德地图动画,点动态样式-基本功能-示例中心-Loca API 示例 | 高德地图API...
- 数据挖掘导论——可视化分析实验
- node.js离线库
- 宝塔脚本下载慢解决办法
- [Nginx] 配置Nginx绑定域名、代理端口
- 阿里云OSS对象存储基础入门
- 用Python分析豆瓣,评分最低的演员原来是他
- 柯洁夺斗地主全国冠军!斗地主可以排解输棋痛苦”
- uboot 添加网络驱动
- 数据结构电梯模拟 100梯1000层 不限梯数
- 蓝蓝算法09-进制转换