什么?? 运算符意味着在C#中?

可能重复:
C#中两个问号共同意味着什么?

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

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

那么,那是什么’??’ 是什么意思?

它是零合并运算符 。

它返回第一个参数,除非它为null,在这种情况下它返回第二个参数。

x ?? y x ?? y大致相当于此(除了第一个参数仅评估一次):

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

或者:

 (x == null) ? y : x 

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

 Color color = user.FavouriteColor ?? defaultColor; 

合并

当在LINQ to SQL中使用查询时?? 运营商可以转换为对COALESCE的调用。 例如,这个LINQ查询:

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

可以导致此SQL查询:

 SELECT COALESCE([t0].[col1],@p0) AS [value] FROM [dbo].[table1] AS [t0] 

它是空合并运算符。 如果返回值为非空,则返回值为左侧,否则为右侧。 它适用于参考类型和nullables

 var x = "foo" ?? "bar"; // "foo" wins string y = null; var z = y ?? "bar"; // "bar" wins int? n = null; var t = n ?? 5; // 5 wins 

如果某个东西为null,则返回true,否则返回一些东西。 请参阅此链接了解更多信息