【发布时间】: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"); 如果 appendWorld 为 false,则 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