【问题标题】:Return true if only 1 parameter out of 3 is true [closed]如果 3 个参数中只有 1 个为真,则返回真 [关闭]
【发布时间】:2018-06-09 12:50:19
【问题描述】:

我有 3 个数组,如果 3 个数组中只有 1 个不为空,我想传递一个 if 语句。如果只有 1 个不为空而其他 2 个为空,我只想通过它。

现在我有一个疯狂的 if 语句,想知道它是否可以简化

if((a && !b && !c) || (!a && b && !c) || (!a && !b && c))

【问题讨论】:

  • var bob = new int[] { a, b, c}; var oneMatch = bob.Count(z => z.Length > 0) == 1;int 更改为您的类型。 我假设您的数组名为 abc
  • 你一直使用itit这个词很难理解你指的it是什么。其次,您的代码实际上没有意义.. a b c 是什么?如果它们是数组,它们就没有意义。
  • 我在想,让abc 等于1 如果为真,0 否则,然后添加它们。检查总和是否为1
  • XOR of three values的可能重复
  • a、b 和 c 是数组还是布尔值?

标签: c#


【解决方案1】:

假设abc是布尔值,其值指示对应的数组是否为空:

(a ^ b ^ c) && !(a && b && c)

如果您按顺序对三个布尔值进行异或运算,当且仅当只有一个变量为真或三个变量都为真时,它才会为真。因此,表达式的第二部分,以消除所有三个变量都为真的情况。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-14
    • 2012-10-12
    • 1970-01-01
    • 2022-11-25
    • 1970-01-01
    • 2016-05-03
    • 1970-01-01
    • 2017-12-11
    相关资源
    最近更新 更多