【问题标题】:Using c# ternary operator to keep a variable the same使用c#三元运算符保持变量相同
【发布时间】:2020-03-31 11:45:09
【问题描述】:

我想使用三元运算符来确定变量是否应该改变。

代码如下:

var c = "hello";
var appendWorld = false;
c = appendWorld ? string.Concat(c, " world") : c;

由于 appendWorld 的值是 false,和以前一样,我想知道是否有更简洁的方法来编写这段代码。

请注意,这只是一个简化示例。

我希望能够编写如下内容:c = appendWorld ? string.Concat(c, " world"); 如果 appendWorldfalse,则 c 自动保持不变。

这样的东西存在吗?

【问题讨论】:

  • 为什么不改用旧的if 呢?三元表示类似于 if/else-appraoch 的东西。你这里好像没有别的了。
  • 如果出于某种原因必须使用三元运算符,它可能必须是这样的:c = string.Concat(c, appendWorld ? " world": ""); 但我宁愿使用简单的if
  • 想要使用三元运算符的主要原因是因为我目前拥有的单个 if 列表很长。换成单排后看起来好多了。唯一的问题是,当我连续多次将 c 重新分配给自身时,效率会降低。
  • 编写一个包含 if 和 action 的方法并调用它。 Local functions这种东西很方便。
  • 如果?是语法糖,那么它是一个 If/else 并且 c=c 指令将是 Clr 中的 NOP。 “无操作”这可能与性能无关。

标签: c# optimization conditional-operator maintainability


【解决方案1】:

我认为最简单的解决方案是使用 if 条件

if(appendWorld)
   c = string.Concat(c, " world");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-05
    • 1970-01-01
    • 2016-09-09
    • 2016-10-14
    • 2013-04-06
    • 2016-09-26
    相关资源
    最近更新 更多