c# - 将 if/else 语句转换为 ?: operator C#
问题描述
我想将我的代码简化为更好的东西。这就是为什么我试图将 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;
但它说:
只有赋值、调用、递增、递减和新对象语句可以用作语句。
我第一次使用这个运算符,我不明白为什么我的简化是错误的?
解决方案
您需要分配三元运算的结果
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;
- 如果条件是get 分配给变量
true
的结果,否则将被分配。expression 1
output
expression 2
空值合并运算符??
(来自 MSDN)
操作员 ??如果不为空,则返回其左侧操作数的值;否则,它计算右手操作数并返回其结果。这 ??如果左侧操作数的计算结果为非空,则运算符不会计算其右侧操作数。
空条件运算符?.
如果您在第二个解决方案中注意到,我使用?.
了运算符,该运算符称为null 条件运算符。此运算符仅在resultat.CodeAlgo
非空时执行。如果为null,它将返回null resultat.CodeAlgo
,这将有助于我们避免空引用异常。
推荐阅读
- algorithm - 找到偶数位数的数字?
- python - 其他类方法的类装饰器
- apache-kafka - Kafka Stream - 自动提交关闭时如何处理错误
- iis - IIS ipSecurity 不阻止外部 IP
- angular - 在 rxjs/Observables 范围内,变量名后面的美元符号是什么意思?
- swift - SwiftUI:从 AppDelegate 中的函数更改 ContentView 中的变量
- typescript - 如何在 TypeScript 中强制使用扩展运算符创建的对象的类型安全
- sql - 使用 SQLite 垂直堆叠多个表?
- python - 当抓取的链接内容中包含 HTML 时,link_text 为空
- search - 厨师刀搜索节点为零或空属性