代码之家  ›  专栏  ›  技术社区  ›  pjnovas

什么意思??运算符在C#中的意思是?[副本]

  •  21
  • pjnovas  · 技术社区  · 14 年前


    What do two question marks together mean in C#?

    嗨,我想在C#找一些MVC 2的培训,我找到了这个:

    ViewData["something"] = something ?? true;
    

    3 回复  |  直到 7 年前
        1
  •  34
  •   Mark Byers    14 年前

    这是最重要的 null-coalescing operator

    x ?? y 大致等同于此(除了第一个参数只计算一次):

    if (x == null)
    {
         result = y;
    }
    else
    {
         result = x;
    }
    

    或者:

    (x == null) ? y : x
    

    当值可以为null时,提供默认值非常有用:

    Color color = user.FavouriteColor ?? defaultColor;
    

    聚结

    ?? 接线员可以翻译成呼叫 COALESCE

    var query = dataContext.Table1.Select(x => x.Col1 ?? "default");
    

    可能导致此SQL查询:

    SELECT COALESCE([t0].[col1],@p0) AS [value]
    FROM [dbo].[table1] AS [t0]
    
        2
  •  8
  •   JaredPar    14 年前

    它是空合并运算符。如果返回值不为null,则返回左侧,否则返回右侧。它同时适用于引用类型和可空值

    var x = "foo" ?? "bar";  // "foo" wins
    string y = null;
    var z = y ?? "bar"; // "bar" wins
    int? n = null;
    var t = n ?? 5;  // 5 wins
    
        3
  •  3
  •   JoshD    14 年前

    如果某个值为null,则返回true,否则返回某个值。 this link 更多。