c#:编写 v1 的更短方法! ? v2:!v2

发布于 2024-12-17 15:21:01 字数 312 浏览 1 评论 0原文

我可以写

bool v1, v2;
// ...

编辑吗:我对造成的混乱感到非常抱歉。正确的说法应该是:

bool v3 = !v1 ? v2 : !v2;

ORIGINAL 我要求

bool v3 = v1 ? v2 : !v2;

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

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

Can I write

bool v1, v2;
// ...

EDIT: I am very sorry for the confusions. The correct statement should be:

bool v3 = !v1 ? v2 : !v2;

ORIGINAL I asked for

bool v3 = v1 ? v2 : !v2;

even shorter? Or: Is there an operator which will have the same result?

So I marked Anders Abels answer as correct, because he answered my initial question. I only need to invert his answer.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

長街聽風 2024-12-24 15:21:01

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

编辑:

对于更新的问题,它是 v1!=v2v1^v2 正如安德斯所说。

I think v1==v2 should do it.

Edit:

For the updated question, it's v1!=v2, or v1^v2 as Anders said.

仅一夜美梦 2024-12-24 15:21:01

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

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

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

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

bool v3 = (v1 != v2);

Vlad already provided the correct answer. I'm just adding a simple table that might help showing how these kind of problems could be solved.

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

Edit: The table has been updated to match the updated question.

As Vlad has already metioned the expression can be refactored into !=. Parantheses added for clarification. They are not needed by the compiler.

bool v3 = (v1 != v2);
凡尘雨 2024-12-24 15:21:01

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

!(v1 ^ v2);

You can use xor (the ^ operator) which will give true if one and only one of the operands is true. It will return the opposite of what you want, so you have to negate everything:

!(v1 ^ v2);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文