在C#中,??操作符是什么意思?

42 浏览
0 Comments

在C#中,??操作符是什么意思?

这个问题已经在这里有了答案:

可能是重复问题:

C#中两个问号在一起是什么意思?

嗨,我在寻找一些关于C# MVC 2的培训,并找到了这个语法:

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

那么,\'??\'是什么意思?

admin 更改状态以发布 2023年5月22日
0
0 Comments

这是一个空对象合并运算符。如果左侧的值不为 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

0
0 Comments

这是 null-coalescing 操作符

它返回第一个参数,除非它为 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]

0