如果只有三个参数中的一个或两个为真,则返回True的代码

Ere*_*rez 12 .net c# programming-languages

如果只有三个参数中的一个或两个是真的,我需要一个返回True的代码

什么是最短/最好的方式?

Stu*_*art 23

我沉迷于这个问题!

bool MyFourthAnswer(bool a, bool b, bool c)
{
   return (a != b) || (b != c);
}
Run Code Online (Sandbox Code Playgroud)

  • 相似但更短:`return c ^ a | a ^ b;`问题DID要求"最短". (8认同)
  • +1:你超越自己.不是很重要,但我打赌这是迄今为止最快的答案. (3认同)

Kon*_*lph 14

只需检查是否至少设置了其中一个值,不是设置了所有三个值:

bool result = (a | b | c) & !(a & b & c);
Run Code Online (Sandbox Code Playgroud)


Ani*_*Ani 10

这是一种奇特的方式:

bool oneOrTwoTrue = a ? (!b || !c) : (b || c);
Run Code Online (Sandbox Code Playgroud)

如果设置了第一个bool,则应该取消其中任何一个.否则,应设置剩余的任何一个.

编辑 - 回应评论:在生产代码中,我可能会选择@ AS-CII或@Stuart; 它最清楚地传达了计算内容的意图.

  • 喜欢三元运算符.+1 (3认同)
  • 事实证明它非常快,这个代码比任何其他解决方案都快,它比最高投票答案快1/6;). (2认同)

Jon*_*ton 5

这应该做到这一点

return !((a & b & c) || (!a & !b & !c))
Run Code Online (Sandbox Code Playgroud)


Stu*_*art 5

另一个答案......我喜欢这个问题......

bool MyThirdAnswer(params bool[] list)
{
   return list.Distinct().Count() == 2;
}
Run Code Online (Sandbox Code Playgroud)