有这样一句
string webSiteId = Request.QueryString["webSiteId"] ?? ConfigurationManager.AppSettings["DefaultSite"];
当中的"??"到底有什么作用?????

解决方案 »

  1.   

    可空类型的值为 null 时用 ?? 后面的值,不为 null 时用 ?? 前面的值。
      

  2.   

    a ?? b大体上相当于:a == null ? b : a
      

  3.   

    可参阅m$网站
    http://msdn.microsoft.com/zh-cn/library/2cf62fcy.aspx?? 运算符一节
      

  4.   

    z = a ?? b // 大体上相当于: z = a == null ? b : a// 或者:if (a == null) z = b;
    else z = a;
      

  5.   

      问号在C#中表示种弱类型。下面解释下问号的用法:  a。  变量定义中含有一个问号,意思是这个数据类型是NullAble类型的。用于给变量设初值的时候,给变量(int类型)赋值为null,而不是0!    例子:    int? x = 125 等同于Nullable<int> x = new Nullable<int>(125);    
      b。  变量定义中含有两个问号, 用于判断并赋值,先判断当前变量是否为null,如果是就可以赋一个新值,否则跳过!意思是取所赋值??左边的,如果左边为null,取所赋值??右边的。   例子:    page ?? 0,表示page为null的时候,取右边的值0.
      

  6.   

    就像三目运算符x:a?b一样。
      

  7.   

    看了MSDN上的解释(感谢wuyi8808提供的连接),我的理解是,??运算符类似于sql里的ISNULL函数, 
    x = a??b的意思是,如果a不为空,则将a的值赋给x,否则将b的值赋给x,用sql来写,就是ISNULL(a, b)