zoukankan      html  css  js  c++  java
  • C# 可空类型的学习

         null,这是一个空值,但是它在数据库和C#中表达的含义不一样。在数据库中,null表示的是不确定,比如null+5还是null,依旧是不确定的,在C#中,如果给一个字符串赋值null,表示这个字符串为空。另外,在数据库中,可以给Int32型赋值null,而在C#中,是不能给一个值类型赋空值的,那么如果来解决数据库和C#中,意义上的不兼容呢?这时,C#中引入了一个泛型 “可空类型”,在一般的赋值的情况下,还可以为null。

           可以以下面的方式来定义一个可空的Int32.

           int? a=null;

           这样就可以将null赋值给一个int,同时也可以将a赋予一般的整数,例如:

           int? b=20;

           需要注意下面几点:

    1. 可控类型表示可以赋值为null的值类型变量,无法创建基于引用类型的可空类型,因为引用类型已经支持了可空类型,
    2. T?是System.Nullable<T>的简写,此处的T为值类型,可以互换。
    3. 可控类型和一般的值类型赋值方法相同。例如int? x=5; double? y=0.4;
    4. 它有2个重要的属性,可以使用 HasValueValue 只读属性测试是否为空和检索值。如果此变量包含值,则HasValue属性返回True,或者此变量的值为空时,返回False。可空变量类型默认值将HasValue设置为false,未定义value.
    5. 可以使用  "??"运算符分配默认值,当前值为空的时候,将其赋予非空类型时使用默认值,例如:
      int? x=null;
      int y=x??-1;

      在x为null的前提下,可以使用??给y赋值。此外,null+一个非空依旧是null,例如:x = null;
                  x = x + 5;此时x依旧是null

    可以参见下面的代码:

    可空类型学习
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;

    namespace 可空数据类型
    {
    class Program
    {
    static void Main(string[] args)
    {
    int? x=null;
    Console.WriteLine(x.HasValue);
    if (x.HasValue)
    {
    Console.WriteLine(
    "不是空值,且值为{0}",x.Value);
    }
    else
    {
    Console.WriteLine(
    "是空值");
    }

    x
    = 20;
    Console.WriteLine(x.HasValue);
    if (x.HasValue)
    {
    Console.WriteLine(
    "不是空值,且值为{0}", x.Value);
    }
    else
    {
    Console.WriteLine(
    "是空值");
    }

    int y=(int)x;//将一个可空类型赋给一个一般的值类型时,需要显式转换,int y=x会报错。


    }
    }
    }
  • 相关阅读:
    sql中group by用来干嘛的
    IE浏览器兼容性问题解决方法
    mysql 解压缩和赋权
    Unity带有网络功能——创建服务,并连接到一个特定的服务
    HTML5学习笔记简明版(10):过时的元素和属性
    网络流柱
    ios 串
    辛星整理3linux笔记,免费下载点,我希望对你有所帮助
    ServletRequest接口召回总结
    实现自我鼠标
  • 原文地址:https://www.cnblogs.com/wxhpy7722/p/2155196.html
Copyright © 2011-2022 走看看