将if/else语句转换为?:运算符C#
我想把我的代码简化成更好的代码。这就是我试图将if/else语句转换为运算符的原因 我的实际代码如下所示:将if/else语句转换为?:运算符C#,c#,if-statement,C#,If Statement,我想把我的代码简化成更好的代码。这就是我试图将if/else语句转换为运算符的原因 我的实际代码如下所示: if (resultat.CodeAlgo != null) { worksheet.Cells[ligne, 7].Value = resultat.CodeAlgo.ToString(); } else { worksheet.Cells[ligne, 7].Value = string.Empty; } 我试图转换为: resultat.CodeAlgo !=
if (resultat.CodeAlgo != null)
{
worksheet.Cells[ligne, 7].Value = resultat.CodeAlgo.ToString();
}
else
{
worksheet.Cells[ligne, 7].Value = string.Empty;
}
我试图转换为:
resultat.CodeAlgo != null
? worksheet.Cells[ligne, 7].Value = resultat.CodeAlgo.ToString()
: worksheet.Cells[ligne, 7].Value = string.Empty;
但它说:
只能将赋值、调用、递增、递减和新对象语句用作语句
第一次使用此运算符时,我不明白为什么我的简化是错误的?您将值分配给工作表.Cells[ligne,7].value。所以代码应该是
worksheet.Cells[ligne, 7].Value = resultat.CodeAlgo != null ? resultat.CodeAlgo.ToString() : string.Empty;
您需要指定三元运算的结果
worksheet.Cells[ligne, 7].Value = resultat.CodeAlgo != null
? resultat.CodeAlgo.ToString()
: string.Empty;
或者您可以使用??
worksheet.Cells[ligne, 7].Value = resultat.CodeAlgo?.ToString() ?? string.Empty;
三值运算符
?:
三元运算符的语法:
output = condition ? expression 1 : expression 2;
- 如果条件为
,则将true
的结果分配给表达式1
变量,否则将分配输出
表达式2
??
()
操作员??返回其左侧操作数的值(如果不是)
无效的否则,它计算右操作数并返回其值
后果这个如果
左侧操作数的计算结果为非null
空条件运算符?。
若你们注意到在第二个解决方案中,我使用了
?。
操作符,这个操作符被称为。仅当resultat.CodeAlgo
不为空时,才执行此运算符。如果resultat.CodeAlgo
为null,它将返回null,这将帮助我们避免null引用异常。Ok,因为Visuel Studio说最好使用?:在我的例子中worksheet.Cells[ligne,7].Value=resultat.CodeAlgo?.ToString()??字符串。空代码>这是否应该回答您的问题?