【问题标题】:Compare multiple values in one condition [duplicate]在一个条件下比较多个值[重复]
【发布时间】:2015-07-08 10:57:48
【问题描述】:
Int32 int1, int2, int3 = 123;

鉴于上述变量,如何在不创建集合来执行某些 Any 或其他操作的情况下测试我的所有变量是否具有值 123

我的尝试

if(int1 == int2 == int3 == 123)
{
   // Fantastic code here
}

编辑

我必须道歉,我的问题还不够清楚。我完全了解&& 运算符,我问的是“优雅”,即如何避免重复我想要比较的值。

以同样的方式,我一次性为所有 3 个整数变量分配了相同的值,我现在想进行比较。到目前为止,看起来好像没有办法做到这一点。我想我问的是不可能的,我必须坚持基本语法并保持简单。

【问题讨论】:

  • 你为什么失望? (int3 == 123) 的类型是 bool,因此当您尝试将其与 int2 进行比较时,您是在尝试将 boolint 进行比较,因此预计会出现编译错误。
  • @AmnonShochot - 公平的解释,谢谢。我只是想以一种更简洁的方式将多个变量测试为相同的值。

标签: c# variables if-statement conditional


【解决方案1】:

你可以创建一个有用的扩展函数:

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);

【讨论】:

  • 这个问题明确地说:“没有创建一个集合来执行一些Any...”
  • 还想检查all,而不是any
  • &amp; 运算符的使用在这里看起来很有趣。你能解释一下这是在做什么吗?谢谢
  • 太棒了,非常感谢。正是我所追求的,我将对此进行真正的探索,以确保没有任何问题,具体取决于我正在评估的内容。再次感谢。
【解决方案2】:

你可以尝试这样的事情,使用逻辑和运算符:

if(int1 == 123 &&
   int2 == 123 &&
   int3 == 123)
{

}

【讨论】:

  • 完全了解此语法,您提供了此答案,因为我的问题不清楚。道歉。无论如何都赞成,因为它在技术上是正确的。
【解决方案3】:
if(int1 == 123 && int2 == 123 && int3 == 123) {  // Code }

您尝试实现的目标不可能以您的方式实现。 你必须用 & 分隔它。

【讨论】:

  • 与我对克里斯托斯的回答所做的评论相同。 +1。
  • 你使用:private bool CompareValues(params int[] values) {
【解决方案4】:
if(int1 == something && int2 == something && int3 == 123)
{
   // Fantastic code here
}

这就是你应该如何使用&amp;&amp; 操作符。您可以使用它检查多个条件。

更新:

就一次检查多个值而言,您可以尝试将这些值创建一个数组,然后触发一个像这样的简单 LINQ 语句来检查所有这些值的特定值:

if (new[] { int1, int2, int3 }.All(x => x == 1))

不知道这是否符合您的要求,不过只是一个建议。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-28
    • 1970-01-01
    相关资源
    最近更新 更多