C#中可空类型

可空类型:在值类型后面加上?,就可以将 null  赋值给值类型。声明方式:datatype?    如,int? a = null;

值类型与引用类型的一个重要区别是:引用类型可以为空,值类型不能。而某些特殊情况(如把C#中数字映射到数据库类型时,数据库的数字可以为空),此时对于大量的数据使用引用类型会增加GC(垃圾回收器)的工作,影响性能。因为只需要在值类型的基础上加上一个 null 值,所以使用可空类型更加方便。

注意:可空类型只对值类型有效。(值类型包括:结构体,枚举类型),委托是引用类型。

public class TT
{
	// 值类型(int)
	int a = 0;
	// 可空类型:值可以为空
	int? b = null;
	// 可空类型(结构体)
	TTT? cc = null;
	delegate void DD();
	// 引用类型(委托)
	DD  dd = null;
}
public struct  TTT
{

}
可空类型的使用:

1、值类型可以隐式转换为对应的可空类型

2、可空类型转换成值类型要进行显示转换,但要注意,转换前要先判断可空类型的值是否为空,为空时转换会抛出异常。

3、通常可空类型的值参与运算时,只要有一个的操作数为 null ,结果也为空。

4、比较可空类型时,只要有一个操作数为 null ,结果就为 false。

public class TTTT
{
	// 可空类型变量 a,b
	int? a = null;
	int? b = 1;
	public TTTT()
	{
		int c = 0;
		int d = 0;
		// int 可以隐式转换成 int?
		b = d;
		// int? 转换成 int 必须要显示转换,并且转换前要进行安全检查,防止原值为 null
		if(a != null)
		{
			// 显示转换
			c = (int)a;
		}
		// a 和 b 只要有一个为 null ,结果为 null
		int? e = a + b; // e = null
		int? e1 = b + 1; // e1 = 2

		// a 和 b 只要有一个为 null ,结果为 false
		if(a > b)
		{

		}
	}

}


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值