• 技术文章 >后端开发 >C#.Net教程

    C#难点逐个击破(8):可空类型System.Nullable

    黄舟黄舟2016-12-22 14:24:07原创652
    null与void

    null值用来表示数据类型未被赋予任何值,它是一种引用类型;void表示没有类型,或者说是没有任何值。null与void的区别可以认为void是根本没有,而null是一个空箱子,里面什么都没有。

    null值只能赋值给引用类型,这里注意到string也是一种引用类型;引用类型在C中称为“指针”,即存放变量位置的内存空间位置。将变量设为null,会显式地设置引用,且它本身不指向任何内存位置;

    null值赋给值类型将导致编译错误。

    122.png

    void用于方法值的返回,其本质并不是一个数据类型,它只是用于指出没有数据类型。

    System.Nullable

    C#中null值不能赋值给值类型,这里的值类型包括struct在内。原因是值类型不能包含引用,null作为一种“无”的引用当然不能被值类型所引用。在实际应用中这样会造成一些问题,假如现在一个数据int类型确实无法确定它的取值。这里就需要使用可空类型。

    System.Nullable<int> i = null; 
    Console.WriteLine(i);

    此时即可将int类型的i声明为null类型,同时该程序运行结果将看到无任何数据显示

    System.Nullable<int> i = null; 
    Console.WriteLine(i);

    此时即可将int类型的i声明为null类型,同时该程序运行结果将看到无任何数据显示

    121.png

    使用GetType()查看其类型将抛出System.NullReferenceException异常

    System.Nullable<int> i = null; 
    Console.WriteLine( i.GetType());

    124.png

    System.Nullable<T>可简写为T?,如System.Nullable<int>可写作int?。可空类型在ADO.NET编程中大量使用。

    另外Nullable类型的实例均拥有HasValue成员与Value成员,其中HasValue为bool类型,表示判断该实例是否有值;Value表示在HasValue有值时实例的取值,在HasVaue为false时使用Value将触发System.InvalidOperationException异常。

    int? i = null; 
    Console.WriteLine(i.HasValue); 
    Console.WriteLine(i.Value);

    125.png

    以上就是C#难点逐个击破(8):可空类型System.Nullable的内容,更多相关内容请关注PHP中文网(m.sbmmt.com)!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    上一篇:C#难点逐个击破(7):checked与unchecked 下一篇:C#难点逐个击破(9):类型转换
    20期PHP线上班

    相关文章推荐

    • 【活动】充值PHP中文网VIP即送云服务器• C#里partial关键字的作用(转摘) • SUNWEN教程之----C#进阶(五)• asp.net中3种验证码示例(数字,数字字母混和,汉字)• SUNWEN教程之----C#进阶(二)• C#难点逐个击破(7):checked与unchecked
    1/1

    PHP中文网