将if/else语句转换为?:运算符C#

将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/else语句转换为运算符的原因

我的实际代码如下所示:

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()??字符串。空这是否应该回答您的问题?