【发布时间】:2018-11-04 21:32:43
【问题描述】:
我想我忘记了一些明显的东西,但如果它验证了一个尽可能保持 DRY 的条件,我似乎无法找到一种方法来分配一个值...... 一些代码来解释我的意思......
a = (b > 1) ? b : c;
甚至a = (a > 1) ? a : b;
所以当然这里没什么大不了的,但是如果 a 被一个方法调用(可能是一个 yield return )或其他什么替换,那么我将不得不调用它两次......
我看到的只是将它存储在一个变量中,然后就像上面的代码一样......
有更好的主意吗?
编辑以便更好地理解: 假设我正在 xml 文件中搜索一个值,使用空检查 (?. ?[]) 等类似
string store_no = myXmlNode.SelectSingleNode("aChildNode")?.SelectSingleNode("myNode")?.Attributes?["store_no]?.Value;
所以在这里我将它存储在一个变量中,以便稍后测试它的值。 如果我想检查特定的 store_no !我将不得不做类似的事情
store_no = (store_no=="STORE23")? store_no : "unknown";
...是的,不确定这个例子是否足够明确,但想法就在这里;我可能不想将数据存储在变量中(例如巨大的数据块)有没有办法获得相同的结果?
【问题讨论】:
-
重复了什么?我在这里没有看到任何重复。
-
为什么将方法的结果分配给变量是一件坏事?如果您不想重复方法调用,那就是这样做的方法
-
我什至不知道您期望什么“更好的主意”。如果您想为
a分配一个新值,它必须已经是一个变量(或属性),而不是一个表达式。 -
我认为您误解了 DRY 的实际含义。
-
我唯一想到的是,不要使用条件运算符,而是:
if(a <= 1) a = b;
标签: c# if-statement syntax dry