c#:写v1的方法比较短! ? v2:!v2

时间:2011-11-23 12:17:14

标签: c# syntax boolean

我可以写

吗?
bool v1, v2;
// ...
编辑:我很抱歉这些混乱。正确的陈述应该是:

bool v3 = !v1 ? v2 : !v2;

ORIGINAL我要求

bool v3 = v1 ? v2 : !v2;

更短?或者:是否有一个具有相同结果的运算符?

因此我将Anders Abels的回答标记为正确,因为他回答了我的初步问题。我只需要反驳他的答案。

3 个答案:

答案 0 :(得分:11)

我认为v1==v2应该这样做。

编辑:

对于更新后的问题,Anders说这是v1!=v2v1^v2

答案 1 :(得分:4)

弗拉德已经提供了正确的答案。我只是添加一个简单的表格,可以帮助展示如何解决这些问题。

           | v2 = true  | v2 = false |
-----------+------------+------------+
v1 = true  |   false    |    true    |
-----------+------------+------------+
v1 = false |    true    |   false    |
-----------+------------+------------+

编辑:该表已更新以匹配更新的问题。

正如弗拉德已经提到的那样,表达式可以重构为!=。 Parantheses补充说明。编译器不需要它们。

bool v3 = (v1 != v2);

答案 2 :(得分:2)

您可以使用xor^运算符),如果只有一个操作数为true,则会true。它将返回与你想要的相反的东西,所以你必须否定一切:

!(v1 ^ v2);