• C#中Null类型


      1:可空值类型

      可空值类型是System.Nullable<T>这个struct的类型

      可空值类型除了可以正确的表示其底层数据类型(也就是T)的范围,还可以表示null

      1.1:如下,bool值类型可以为True和False,但不能为Null

            Nullable<bool>除了可以为True和False外,还可以为Null

      

      1.2:Nullable写起来太麻烦,这里有简便写法,只需要在类型后面加个?即可,如下

    2:Null,空,空白string

                string name = "张三"; //正常字符串,有值非空
    
                string name1 = null;  //值为null
    
                string name2 = "";    //是个空字符串
    
                string name3 = "    ";//空白字符串,双引号之间是空格或者Tab键
    

      2.1:如何判断Null,空,空白string

        2.1.1:判断Null

    string name = null; 
    
    if (name == null)
    {
        //...
    }

        2.1.2:判断空,双引号之间啥也没有那种,下面的这个方法同样也包含了字符串为Null的这种情况

    string name2  = ""; 
    
    if (string.IsNullOrEmpty(name2))
    {
        //...
    }

        2.1.3:判断空白字符串,也可能是空字符串,也可能是Null字符串,就用下面这个

    string name3 = "    ";
    
    if (string.IsNullOrWhiteSpace(name3))
    {
        //...
    }

    3:Nullable<T>的常用属性和方法

      .HasValue  //如果值为null,结果就是false; 否则:true   

        

      .Value //底层值类型的值,如果Nullable<T>的值是Null,就会报异常

        

      .GetValueOrDefault() //底层值类型的值或该类型的默认值,意思就是如果你的值不为Null,就会把值返回回来;如果是Null,就返回这个值的默认值,int的默认值是0,所以第二个图返回0

        

      .GetValueOrDefault(默认值)//底层值类型的值或指定的默认值,意思就是可以指定默认值,不为Null就返回底层值类型;如果为Null就返回默认值

        

     4:Nullable<T>转换

      T ---> Nullable<T> 隐式转换,因为后面的比前面的值的范围大,多了一个Null值

      如下图:从范围小的a转换成范围大的b就直接隐式转换,前提这个范围大的要包含范围小的类型才可以

      

      Nullable<T> ---> T ,反而言之,就得显示转换,如图一错二对:

         

      如果值为Null,就会报异常,如图:

      

    5:检查Null的操作符

      条件操作符(三元运算符)?:  

      

      Null合并操作符 ?? 如果左边a不为Null,返回左边a的值;如果a为Null,返回b的值

        

      Null条件操作符 ?.  

      

      Null条件操作符还有  ?[   针对索引表示法的Null条件操作符

       

     6:string str = null,string str1 = “”,string str2 = string.empty;的区别

      string str = null;在栈上有地址,但在堆上没有空间;null是string的默认值

      string str1 =“”:空字符串,在栈和堆都有地址,并且堆上地址为空

      string str2 = string.empty;它和str1差不多,在堆栈都为空间,不同就是在语法级上对str1的优化

      

  • 相关阅读:
    中文词频统计
    复合数据类型,英文词频统计
    Mybatis 异常:Cause: java.io.IOException: Could not find resource com.xxx.xxx.xml
    Ajax:修改了项目的ajax相关代码,点击运行没有效果
    大数据应用期末总评
    分布式并行计算MapReduce
    分布式文件系统HDFS 练习
    安装关系型数据库MySQL和大数据处理框架Hadoop
    爬虫综合大作业
    爬取全部的校园新闻
  • 原文地址:https://www.cnblogs.com/Codemandyk/p/10980009.html
Copyright © 2020-2023  润新知