什么? 运营商意味着在C#?

可能重复:
C#中两个问号在一起意味着什么?

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

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

那么,那是什么? 是指?


它是空合并运算符。

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

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

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

或者:

(x == null) ? y : x

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

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]

它是无效的合并操作符。 如果返回值非空,则返回值为左侧,否则返回右侧。 它适用于参考类型和可空值

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,否则返回一些内容。 请参阅此链接了解更多。

链接地址: http://www.djcxy.com/p/53829.html

上一篇: What does ?? operator means in C#?

下一篇: What is the "??" operator for?