Сравните значение int - PullRequest
       12

Сравните значение int

0 голосов
/ 03 апреля 2012

Как я могу проверить, если значение int, например, 1,2,4 или 5?Я думал, что смогу сделать что-то подобное, но, видимо, нет.

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

Ответы [ 6 ]

4 голосов
/ 03 апреля 2012

Использовать LINQ:

if ((new[] {1,2,4,5}).Contains(someInt))
3 голосов
/ 03 апреля 2012

Написать метод расширения

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");
    }
}
1 голос
/ 03 апреля 2012

Есть два способа, о которых я могу думать.

Или все сравнения.

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

}

Или для более гибкого решения посмотрите, есть ли someInt в массиве.

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

}
1 голос
/ 03 апреля 2012

В качестве альтернативы вы можете использовать:

switch(someInt)
{
   case 1:
   case 2:
   case 4:
   case 5:
      DoYourStuff();
      break;
}
1 голос
/ 03 апреля 2012

Вам нужно написать свое 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), чтобы вычислить одно значение, вместо того, чтобы выдавать ошибку компиляции.И, если он действительно оценивается как одно значение, то он не может иметь значение, которое вы хотите.Потому что вы хотите, чтобы тест возвращал значение true, когда someInt равно одному из четырех возможных значений.

Суть в том, что == проверяет точное равенство между точно двумя значениями.

0 голосов
/ 03 апреля 2012

Вы не можете так делать. Вместо этого используйте:

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

Или вы также можете использовать что-то вроде этого:

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