Nullable类型

今天写程序,突然看到这么一个类型Nullable,查查msdn,才知道这是个很有用的东西。
整理如下:

1. Nullable类型是一个结构:System.Nullable, 书写格式为:T?。T是Nullable的基础类型。T可以是包含struct在内的任何值类型;它不能是一个引用类型。
示例:
int? i = 10;
double? d1 = 3.14;
bool? flag = null;
char? letter = 'a';
int?[] arr = new int?[10];

2. Nullable类型的意思就是为原来的T增加一个格外的值:"null"。
示例:判断null  int? x = 2;  if (x != null) {...}

3. Nullable类型的两个非常有用的只读属性:HasValue和Value。
示例:if(x.HasValue){y=x.Value;}如果HasValue返回false,访问Value的操作将会引发一个InalidOperationException的异常。

4. 操作符:??。它的意思就是如果Nullable类型的实例的值为null,那么就给他一个非null的默认值。
示例:int? x = null; int y = x ?? -1;
这个操作也可用在多个Nullable类型上,
示例:
int? e = null;
int? f = null;
int g =  e ?? f ?? -1;

5.如果我想把两个int类型对象加起来,同时也保留他们的null值,这样写就可以了:
int? x = 125;
int? y = 33;
int? z = x + y;

一个Nullable类型可以转换成常规类型,一种方法是类型转换,另一种是通过Value属性。
示例:
int? n = null;    
int m2 = (int)n;  
int m3 = n.Value; 

当对Nullable类型做比较时,任一个Nullable类型的值为null,比较结果为false.因此,非常重要的一点是,不能因为当前比较的结果是false,就认为它的反方面是true.
示例:
int? num1 = 10;
int? num2 = null;
if (num1 >= num2){...}else{...}

注意:bool?类型
bool?类型包含三个值:true,false和null.因此,它们不能被用在if,for和while语句中,否则将会产生编译错误CS0266
不可以这样:
bool? b = null;
if (b) // Error CS0266.
{}

6.函数GetValueOrDefault 表示检索当前 Nullable 对象的值或默认值

共同进步!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值