在一个条件下比较多个值
Compare multiple values in one condition
Int32 int1, int2, int3 = 123;
鉴于上述变量,我如何测试所有变量都具有值 123
而无需创建集合来执行某些 Any
或其他操作?
我试过的
if(int1 == int2 == int3 == 123)
{
// Fantastic code here
}
编辑
抱歉,我的问题还不够清楚。我完全了解 &&
运算符,我在询问 'elegance',即如何避免重复我要比较的值。
以同样的方式,我一次性为所有 3 个整数变量分配了相同的值,我现在想进行比较。到目前为止,似乎没有办法做到这一点。我想我问的是不可能的,我必须坚持基本语法并保持简单。
您可以尝试这样的操作,使用逻辑与运算符:
if(int1 == 123 &&
int2 == 123 &&
int3 == 123)
{
}
if(int1 == something && int2 == something && int3 == 123)
{
// Fantastic code here
}
这就是您应该使用 &&
运算符的方式。您可以使用此检查多个条件。
更新:
就一次检查多个值而言,您可以尝试将这些值组成一个数组,然后像这样触发一个简单的 LINQ 语句来检查所有这些值的特定值:
if (new[] { int1, int2, int3 }.All(x => x == 1))
不知道这是否符合您的要求,不过只是一个建议。
if(int1 == 123 && int2 == 123 && int3 == 123) { // Code }
您尝试实现的目标不可能以您的方式实现。
你必须用 &.
分隔它
您可以创建一个有用的扩展函数:
public static bool EqualsAll<T>(this T val, params T[] values)
{
return values.All(v => v.Equals(val));
}
这样称呼它:
bool res = 123.EqualsAll(int1,int2,int3);
Int32 int1, int2, int3 = 123;
鉴于上述变量,我如何测试所有变量都具有值 123
而无需创建集合来执行某些 Any
或其他操作?
我试过的
if(int1 == int2 == int3 == 123)
{
// Fantastic code here
}
编辑
抱歉,我的问题还不够清楚。我完全了解 &&
运算符,我在询问 'elegance',即如何避免重复我要比较的值。
以同样的方式,我一次性为所有 3 个整数变量分配了相同的值,我现在想进行比较。到目前为止,似乎没有办法做到这一点。我想我问的是不可能的,我必须坚持基本语法并保持简单。
您可以尝试这样的操作,使用逻辑与运算符:
if(int1 == 123 &&
int2 == 123 &&
int3 == 123)
{
}
if(int1 == something && int2 == something && int3 == 123)
{
// Fantastic code here
}
这就是您应该使用 &&
运算符的方式。您可以使用此检查多个条件。
更新:
就一次检查多个值而言,您可以尝试将这些值组成一个数组,然后像这样触发一个简单的 LINQ 语句来检查所有这些值的特定值:
if (new[] { int1, int2, int3 }.All(x => x == 1))
不知道这是否符合您的要求,不过只是一个建议。
if(int1 == 123 && int2 == 123 && int3 == 123) { // Code }
您尝试实现的目标不可能以您的方式实现。 你必须用 &.
分隔它您可以创建一个有用的扩展函数:
public static bool EqualsAll<T>(this T val, params T[] values)
{
return values.All(v => v.Equals(val));
}
这样称呼它:
bool res = 123.EqualsAll(int1,int2,int3);