【问题标题】:c#: shorter way to write v1! ? v2 : !v2c#: 更短的编写 v1 的方法! ? v2 : !v2
【发布时间】:2012-01-04 17:39:51
【问题描述】:

我可以写吗

bool v1, v2;
// ...

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

bool v3 = !v1 ? v2 : !v2;

我要求的原件

bool v3 = v1 ? v2 : !v2;

更短?或者:有没有同样结果的算子?

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

【问题讨论】:

  • 你能提供完整的语句不只是条件吗?

标签: c# syntax boolean


【解决方案1】:

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

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

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

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

bool v3 = (v1 != v2);

【讨论】:

  • 我的错误。我没有写正确的问题......他的答案现在被标记了。谢谢你的桌子。
【解决方案2】:

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

编辑:

对于更新后的问题,正如 Anders 所说,它是 v1!=v2v1^v2

【讨论】:

  • 简洁优雅。我休息一下:-)
  • 我认为v1 != v2 是最优雅的解决方案。
【解决方案3】:

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

!(v1 ^ v2);

【讨论】:

  • 我觉得有趣的是注意到 xornot equal 是一样的。所以你的表达方式和v1 == v2一样。
猜你喜欢
  • 2015-06-21
  • 1970-01-01
  • 1970-01-01
  • 2018-10-15
  • 1970-01-01
  • 2015-12-17
  • 2022-10-13
  • 1970-01-01
  • 2021-12-28
相关资源
最近更新 更多