c#:编写v1的更短路! ? V2:V2
bool v1, v2;
// ...
编辑:我的困惑深表歉意。正确的说法应该是:
bool v3 = !v1 ? v2 : !v2;
ORIGINAL我问
bool v3 = v1 ? v2 : !v2;
更短?或者:是否有运营商会有相同的结果?
因此,我标记了Anders Abels的答案是正确的,因为他回答了我最初的问题。我只需要反转他的答案。
可以使用xor
(在^
运营商),这将给true
如果一个操作数,只有一个是true
。它会返回你想要的对面,所以你要否定一切:
!(v1^v2);
我认为有趣的是,* xor *与*不等于*相同。所以你的表达和'v1 == v2'一样。 – svick
我觉得v1==v2
应该这样做。
编辑:
为更新的问题,这是v1!=v2
,或v1^v2
作为安德斯说。
简单而优雅。我休息我的情况:-) –
我认为'v1!= v2'是最优雅的解决方案。 –
Vlad已经提供了正确的答案。我只是添加一个简单的表格,可能有助于说明如何解决这些问题。
| v2 = true | v2 = false |
-----------+------------+------------+
v1 = true | false | true |
-----------+------------+------------+
v1 = false | true | false |
-----------+------------+------------+
编辑:该表已更新,以匹配更新的问题。
由于弗拉德已经提出了表达式可以重构为!=
。为了澄清,添加了Paagesheses。编译器不需要它们。
bool v3 = (v1 != v2);
我的错误。我没有写出正确的问题......他的回答现在已被标记出来。谢谢你的桌子。 – SACO
您能否提供整个声明不仅条件? – sll