比较int的值

时间:2012-04-02 22:21:18

标签: c# operators int

如何测试int的值是例如1,2,4还是5?我以为我可以做这样的事情,但显然不是。

if(someInt == (1||2||4||5))

6 个答案:

答案 0 :(得分:4)

使用LINQ:

if ((new[] {1,2,4,5}).Contains(someInt))

答案 1 :(得分:3)

编写扩展方法

static class MiscExtensions
{
    static bool EqualToAny<T>(this T i, params T[] items)
    {
        return items.Any(x => x.Equals(i));
    }
}

并像这样使用

static class Program
{
    static void Main(string[] args)
    {
        int myNumber = 5;
        if (myNumber.EqualToAny(1, 2, 3, 4, 5))
            Console.WriteLine("Hello, World");
    }
}

答案 2 :(得分:1)

您需要像这样编写if语句

if (someInt==1 || someInt==2 || someInt==4 || someInt==4)

或者您可以使用switch声明

switch (someInt)
{
    case 1:
    case 2:
    case 4:
    case 5:
        // do something
        break;
}

分解您尝试过的代码非常有趣。你写道:

if(someInt == (1||2||4||5))

我想在你的脑海里,你把它读作,如果someInt等于1或2或4或5 。如果计算机表现得像人类,那么这将起作用。但我们都知道计算机的行为并不像那样!

==等于运算符(二元运算符)在其两个操作数相等时返回true。这意味着,在您的版本中,如果编译,您需要someInt等于(1||2||4||5)。为了使其更有意义,我们需要(1||2||4||5)来评估单个值,而不是产生编译错误。并且,如果它确实评估为单个值,那么它就不具有您想要的含义。因为当someInt等于四个候选值之一时,您希望测试返回true。

底线是==测试恰好两个值之间的精确相等。

答案 3 :(得分:1)

作为替代方案,您可以使用:

switch(someInt)
{
   case 1:
   case 2:
   case 4:
   case 5:
      DoYourStuff();
      break;
}

答案 4 :(得分:1)

我有两种方法可以想到。

或所有比较。

if (someInt == 1 || someInt == 2 || someInt == 4 || someInt == 5) {

}

或者,对于更灵活的解决方案,请查看someInt是否在数组中。

if (Array.BinarySearch(new[] { 1, 2, 4, 5 }, someInt ) != -1) {

}

答案 5 :(得分:0)

你不能这样做。而是使用:

if(someInt == 1 || someInt == 2 || someInt == 4 || someInt == 5)

或者你也可以使用这样的东西:

if((new List<int>() {1,2,4,5}).Contains(someInt) == true)