C#2.0中的可空类型

C#2.0中的可空类型

 

1、可空类型是 System.Nullable 结构的实例,可见是值类型。无法创建基于引用类型的可空类型。(引用类型已支持 null 值)。
2、可空类型表示:基础值类型正常范围内的值+null,Nullable<bool>Nullable<bool> 可以被赋值为 truefalsenull。
3、定义:T?System.Nullable<T>此处的 T 为值类型。
4、为可空类型赋值与为一般值类型赋值的方法相同,如 int? x = 10;
5、使用 ?? 运算符分配默认值,当前值为空的可空类型被赋值给非空类型时将应用该默认值,如 int? x = null;   int  y = x ?? -1;。如果基础类型的值为 null,请使用 System.Nullable.GetValueOrDefault 属性返回该基础 类型所赋的值或默认值,例如 int j = x.GetValueOrDefault()(为null时候返回默认值,否则返回当前值)。
6.HasValue 和 Value 只读属性测试是否为空和检索值,例如 if(x.HasValue) j = x.Value。
示例:

 1 using  System;
 2 using  System.Collections.Generic;
 3
 4 class  NullableBasics
 5 {
 6    static void DisplayValue(int? num)
 7    {
 8        if (num.HasValue == true)
 9        {
10            Console.WriteLine("num = " + num);
11        }

12        else
13        {
14            Console.WriteLine("num = null");
15        }

16
17        // 如果 num.HasValue 为 false,则 num.Value 引发 InvalidOperationException
18        try
19        {
20            Console.WriteLine("value = {0}", num.Value);
21        }

22        catch (InvalidOperationException e)
23        {
24            Console.WriteLine(e.Message);
25        }

26    }

27
28    static void Main()
29    {
30        DisplayValue(1);
31        DisplayValue(null);
32        Console.Read();
33        
34    }

35}

结果:
num = 1
value = 1
num = null
可为空的对象必须具有一个值。


示例:??运算符

 1 using  System;
 2
 3 class  NullableOperator
 4 {
 5    static int? GetNullableInt()
 6    {
 7        return null;
 8    }

 9
10    static string GetStringValue()
11    {
12        return null;
13    }

14
15    static void Main()
16    {
17        // ?? 运算符示例。
18        int? x = null;
19
20        // y = x,只有当 x 为 null 时,y = -1。
21        int y = x ?? -1;
22        Console.WriteLine("y == " + y);                          
23
24        // 将方法的返回值赋给 i,
25        // 仅当返回值为 null 时,
26        // 将默认的 int 值赋给 i。
27        int i = GetNullableInt() ?? default(int);
28        Console.WriteLine("i == " + i);                          
29
30        // ?? 也适用于引用类型。
31        string s = GetStringValue();
32        // 显示 s 的内容,仅当 s 为 null 时,
33        // 显示“未指定”。
34        Console.WriteLine("s = {0}", s ?? "null");
35        Console.Read();
36    }

37}

38


结果:
y == -1
i == 0
s = null

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值