What does ?? operator means in C#?
本问题已经有最佳答案,请猛点这里访问。
Possible Duplicate:
What do two question marks together mean in C#?
嗨,我在找MVC 2在C的培训,我发现了这个Sintax:
1 | ViewData["something"] = something ?? true; |
那么,那是什么?是什么意思?.
它是空合并运算符。
它返回第一个参数,除非它为空,在这种情况下,它返回第二个参数。
1 2 3 4 5 6 7 8 | if (x == null) { result = y; } else { result = x; } |
或者:
1 | (x == null) ? y : x |
当值可以为空时,提供默认值很有用:
1 | Color color = user.FavouriteColor ?? defaultColor; |
聚结
在LINQ to SQL查询中使用时,可以将
1 | var query = dataContext.Table1.Select(x => x.Col1 ??"default"); |
可能导致此SQL查询:
1 2 | SELECT COALESCE([t0].[col1],@p0) AS [value] FROM [dbo].[table1] AS [t0] |
它是空合并运算符。如果返回值不为空,则返回值为左侧,否则返回值为右侧。它既适用于引用类型,也适用于空值。
1 2 3 4 5 | var x ="foo" ??"bar"; //"foo" wins string y = null; var z = y ??"bar"; //"bar" wins int? n = null; var t = n ?? 5; // 5 wins |
如果某个值为空,则返回true,否则返回某个值。有关更多信息,请参阅此链接。