可为空的值类型(Nullable value type)

可为空的值类型T? 包括了基础类型的值加上空值null.例如你可以将null,true,false 这三个可能的值赋给bool?类型的变量。可为空的值类型是泛型结构体 System.Nullable的实例。
可为空的值类型存在的意义?
需要表示基础值类型的未定义值时,通常使用可为空的值类型。 例如,布尔值或 bool 变量只能为 true 或 false。 但是,在某些应用程序中,变量值可能未定义或缺失。 例如,某个数据库字段可能包含 true 或 false,或者它可能不包含任何值,即 NULL。 在这种情况下,可以使用 bool? 类型。再比如再数据库的表中存在EndDate的列,它的值是为未来的某个时间点。则可以用int?类型,其现在的初始值为null。
可为空的值类型的声明和复制

double? pi = 3.14;
char? letter = 'a';
int m1 = 10;
int? m2 = m1;
bool? flag = null;
//Nullable value type array
int?[] arr = new int?[10];

可为空的值类型的默认值为null.
检测可为空的值类型的实例的3种方式

//1.is 操作符和类型模式搭配使用
int? a = 42;
if(a is int valueofA)
{
	// a是非null的int型,其值为valueofA
}
else
{
	// a为null
}
//2.通过泛型结构体的properties判断
int? a = 42;
if(a.HasValue)
{
	// a是非null的int型
}
else
{
	// a为null
}
//3.
int? a=42;
if(a != null)
{

}
else
{
}

将可为空的值类型转换为其基础值类型的3种方式

//1.通过NULL合并操作符 ??
int? a = 28;
int b = a?? -1;
//b is 27.
int? c= null;
int d = c?? -1;
//d is -1
//2.通过泛型结构体的Nullable<T>.GetValueOrDefault() 方法
int ? a = 28;
int b = a.GetValueOrDefault() -1;
//b is 27.
int? c= null;
int d = c.GetValueOrDefault() -1;
//d is -1

//3.显示强制转换
int? a = null;
int b = a; //编译失败
int b = (int)a;//编译通过,但是运行时抛InvalidOperationException
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值