c#:更短的方式来写v1!? V2: !

本文关键字:v1 V2 方式 | 更新日期: 2023-09-27 18:15:26

我可以写

bool v1, v2;
// ...

编辑:我很抱歉造成的混乱。正确的语句应该是:

bool v3 = !v1 ? v2 : !v2;

原文

bool v3 = v1 ? v2 : !v2;

更短?或者:是否存在具有相同结果的操作符?

所以我把Anders Abels的答案标记为正确,因为他回答了我最初的问题。我只需要颠倒他的答案。

c#:更短的方式来写v1!? V2: !

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

编辑:

对于更新的问题,它是v1!=v2,或者是安德斯说的v1^v2

Vlad已经提供了正确答案。我只是添加了一个简单的表格,它可能有助于展示如何解决这类问题。

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

编辑:表格已经更新,以匹配更新的问题。

正如Vlad已经提到的,表达式可以重构到!=中。为澄清添加了括号。编译器不需要它们。

bool v3 = (v1 != v2);

您可以使用xor (^运算符),如果一个且只有一个操作数是true,则会给出true。它将返回与您想要的相反的结果,因此您必须否定所有内容:

!(v1 ^ v2);