我在C#中创建一个if语句,如果只有一个参数为true,我想返回true.我将||在示例中使用,因为这是我能想到的最接近的事情:
int a = 1;
int b = 2;
int c = 3;
if(a == 1 || b == 2)
{
Console.Log("The first statement is true")
}
if(a == 1 || b == 3)
{
Console.Log("The second statement is true")
}
if(a == 0 || b == 0 || c == 3)
{
Console.Log("The third statement is true")
}
if(a == 1 || b == 0 || c == 3)
{
Console.Log("The fourth statement is true")
}
//Output:
//The second statement is true
//The third statement is true
Run Code Online (Sandbox Code Playgroud)
再一次,把它想象||成我正在寻找的运营商.这样的运算符是否存在,或者我应该定义自己的布尔函数?
对于两个表达式,您可以使用XOR:
if (a == 1 ^ b == 0)
Run Code Online (Sandbox Code Playgroud)
对于两个以上,您可以执行以下操作:
if (new[] { a == 1, b == 0, c == 2 }.Count(x => x) == 1)
Run Code Online (Sandbox Code Playgroud)
这基本上计算从表达式构造的数组的所有"真实"元素,并检查计数是否为1.
无可否认,首先评估所有条件,即使前两个条件成立,也将计算所有条件(因此最后一个条件无关紧要).如果最终对你来说成本很高,那么还有更复杂的选择,但我肯定会坚持这样的事情,除非它确实是一个问题.
| 归档时间: |
|
| 查看次数: |
1823 次 |
| 最近记录: |