• ? 和 ??的使用


    1、? 的使用

    第一种:可空类型修饰符(?),即定义数据类型可为空

    目的是用于对int,double,bool等无法直接赋值为null的类型进行null的赋值

        int i;                      //--> default value is 0
        int? valueOfNull;           //--> default value is null    

    说明

      引用类型可以使用空引用,表示一个不存在的值,而值类型通常不能表示为空。

      例如:

        string str = null;   是正确的,

        int i = null;     编译器就会报错。

       为了使值类型也可为空,就可以使用可空类型,即用可空类型修饰符"?"来表示,表现形式为"T?"

      例如:

        int?       表示可空的整型,

        DateTime?    表示可为空的时间。

      T?  其实是System.Nullable(泛型结构)的缩写形式,也就意味着当你用到T?时,编译器编译 时会把T?编译成 System.Nullable的形式。

       例如:int?  编译后便是System.Nullable的形式。

     

     

    第二种:用于判断对象是否为null

    ? 用于判断对象是否为 null 时,

    如果对象为null,则不管调用什么都不会抛出异常,直接返回null ;

    如果对象不为null,则返回 ? 右边的值;

        Pen redPen = new Pen();
         redPen.showColor();
         
         Pen nullPen = null;
         nullPen?.showColor();             // 这里将不会引起异常
         
         Pen testNullPen = null;
         testNullPen.showColor();         // 这里将会抛出异常

     

     

     

    2、?? 的使用

    空合并运算符(??)

    用于定义可空类型和引用类型的默认值。

    ?? 如果此运算符的左操作数不为null,则此运算符将返回左操作数,否则返回右操作数。

     

    例如:

      a ?? b   当 a 为 null 时则返回 b,a 不为 null 时则返回 a 本身。

     

     空合并运算符为右结合运算符,即操作时从右向左进行组合的。

    例如:

      “ a ?? b ?? c ” 的形式按 “a ?? (b ?? c)” 计算。

     

      string name = null;
       name = name ?? "Alex";   // --> if name is null, return Alex ; so name = "Alex"

     

       //“ a ?? b ?? c ” 的形式按 “ a ?? (b ?? c) ” 计算。
        string aa = null, bb = "bb", cc = null, ff = "ff";
        string dd = aa ?? bb ?? cc;        //bb
        string ee = bb ?? aa ?? cc;        //bb
        string gg = bb ?? cc ?? ff;        //bb
        Console.WriteLine("dd={0}", dd);
        Console.WriteLine("ee={0}", ee);
        Console.WriteLine("gg={0}", gg);

     

    运行结果

  • 相关阅读:
    sharepoint 2010 无法停止爬网 金大昊(jindahao)
    自定义搜索核心结果 金大昊(jindahao)
    fast search 爬网倒计时 金大昊(jindahao)
    workspace 限制 金大昊(jindahao)
    权限级别“打开项目”影响搜索结果 金大昊(jindahao)
    sharepoint 多服务器部署错误 金大昊(jindahao)
    大列表读取 金大昊(jindahao)
    sharepoint web servcie 金大昊(jindahao)
    SharePoint:pdf加密(RMS)方案 金大昊(jindahao)
    Infopath form to HTML using csharp 金大昊(jindahao)
  • 原文地址:https://www.cnblogs.com/ggll611928/p/15945318.html
Copyright © 2020-2023  润新知