嗨,我在C#中寻找MVC 2的一些培训,我找到了这个sintax:
ViewData["something"] = something ?? true;
那么,那是什么'??'是什么意思?。
答案 0 :(得分:34)
它返回第一个参数,除非它为null,在这种情况下它返回第二个参数。
x ?? y
大致等同于此(除了第一个参数仅评估一次):
if (x == null)
{
result = y;
}
else
{
result = x;
}
或者:
(x == null) ? y : x
为值为null时提供默认值非常有用:
Color color = user.FavouriteColor ?? defaultColor;
<强> COALESCE 强>
在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]
答案 1 :(得分:8)
它是空合并运算符。如果返回值为非空,则返回值为左侧,否则为右侧。它适用于引用类型和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
答案 2 :(得分:3)
如果某些内容为null,则返回true,否则返回一些内容。 有关详情,请参阅this link。