【问题标题】:Handling a conditional statement in a single line [duplicate]在单行中处理条件语句[重复]
【发布时间】:2020-03-05 13:05:43
【问题描述】:

是否可以在没有ifelse 的情况下编写以下C# 代码 一行

string res = "";

if (!string.IsNullOrEmpty(var1))
    res = string.Format("{0}/{1}", var1, var2);
else
    res = var2;

【问题讨论】:

  • res = 条件? resultiftrue : resultiffalse
  • 您正在寻找ternary operator
  • 为什么只需要一行代码?
  • 您可以通过谷歌搜索问题标题中的术语来快速找到这一点,(以及“C#”,即使在许多语言中都存在相同的运算符)idownvotedbecau.se/noresearch
  • 字符串 res = string.IsNullOrEmpty(var1) ? var2 : string.Format("{0}/{1}", var1, var2) ;

标签: c# conditional-statements


【解决方案1】:

试试这个,

string res = !string.IsNullOrEmpty(var1) ? string.Format("{0}/{1}", var1, var2) : var2;

基本上, (if this statement is true (like if block's condition part)) ? (this section works) : ((else) this section works);

希望这会有所帮助,

【讨论】:

  • 由于 OP 不知道三元运算符是什么,也许在这个答案中包含一个解释是谨慎的?
  • 你说得对,基本上已经解释过了。 @马丁
【解决方案2】:

条件运算符 ?:,也称为三元条件运算符,计算布尔表达式并返回两个表达式之一的结果,具体取决于布尔表达式的计算结果是真还是假。 条件运算符的语法如下:

condition ? consequent : alternative

所以你要求的代码行是

string res = !string.IsNullOrEmpty(var1) ? string.Format("{0}/{1}", var1, var2) : var2;

【讨论】:

  • 由于 OP 显然不知道三元运算符是什么,也许在这个答案中包含一个解释是谨慎的?
  • 补充说明,谢谢
【解决方案3】:

从技术上讲,您可以将if 隐藏在三元运算符 ?:

  string res = $"{(!string.IsNullOrEmpty(var1) ? $"{var1}/" : "")}{var2}";

但是为了什么

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-25
    • 1970-01-01
    • 2023-04-09
    • 1970-01-01
    • 2021-06-23
    • 2013-09-01
    • 2012-09-17
    相关资源
    最近更新 更多