小编Mik*_*ice的帖子

在条件语句中使用 null 条件运算符时,如何处理 null 情况?

假设我这里有以下代码:

static void Main(string[] args)
{
   StringBuilder[] s = new StringBuilder[3];
   if (s[0]?.Length > 0)
   {
       Console.WriteLine("hi");
   }
}
Run Code Online (Sandbox Code Playgroud)

我的理解是 if 语句中的表达式必须是布尔表达式。布尔表达式(我的理解可能是错的)是计算结果为 true 或 false 的表达式。

在这种情况下,null 条件运算符将返回 null,因为引用类型变量数组中元素的默认值为 null。因此,这个 if 语句等价于

bool? x = null;
if (x)
{ 
   // do cool things here */ 
}
Run Code Online (Sandbox Code Playgroud)

但这给了我一个语法错误:无法将 null 转换为 bool。

那么,上面的 StringBuilder 示例是如何工作的呢?我的理解是,上述代码的更好方法应该是将其与空合并运算符结合起来,如下所示:

if (s[0]?.Length > 0 ?? false) {}
Run Code Online (Sandbox Code Playgroud)

谢谢大家:)

.net c#

2
推荐指数
1
解决办法
267
查看次数

标签 统计

.net ×1

c# ×1