Я напишу свое выражение if в методе switch ... но как записать логическое значение в строке case - PullRequest
0 голосов
/ 19 июня 2019

Первое спасибо за помощь!

У меня вопрос ... как записать этот if-codeblock в корпус коммутатора. У меня только проблема с логическим значением.

Мой кодовый блок

int Note = 0;

Console.WriteLine("What is your note?: ");
Note = Convert.ToInt32(Console.ReadLine());

if ((Note < 1) || (Note > 6))
{
   Console.WriteLine("Your input is wrong!");
}
else 
{
   if (Note <= 4)
   {
      Console.WriteLine("Passed");
   }
   else 
   {
      Console.WriteLine("Failed");
   }

}

Я пытался записать это в метод переключения

int Note = 0;
Console.WriteLine("What ist your note?: ");
Note = Convert.ToInt32(Console.ReadLine());

switch (Note) 
{
   case Note < 1 || Note > 6: 
      Console.WriteLine("Your input is wrong!");
         break;

   case Note <= 4:
      Console.WriteLine("Passed");
         break;
}

Сообщение об ошибке: я не могу преобразовать строку в int.

Еще раз спасибо за любые идеи.

Ответы [ 3 ]

3 голосов
/ 19 июня 2019

C # 7 + поддерживает переключение на основе диапазона:

switch (Note)
{
    case int n when n< 1 || Note > 6:
        Console.WriteLine("Your input is wrong!");
        break;
    case int n when n <= 4:
        Console.WriteLine("Passed");
        break;
}
2 голосов
/ 19 июня 2019

Вы можете сделать это так, если вам действительно нужен переключатель

switch (Note)
{
    case 1:
    case 2:
    case 3:
    case 4:
        Console.WriteLine("Passed");
        break;
    case 5:
    case 6:
        Console.WriteLine("Failed");
        break;
    default:
        Console.WriteLine("Your input is wrong!");
        break;
}
1 голос
/ 19 июня 2019

Это не то, для чего switch заявления. Вы должны продолжать использовать if.

Я докажу это очень легко, используя switch, как вы спросили:

switch (Note) 
{
   case 1: 
   case 2: 
   case 3: 
   case 4: 
      Console.WriteLine("Passed");
         break;
   case 5: 
   case 6: 
      Console.WriteLine("Failed");
         break;
   default: 
      Console.WriteLine("Your input is wrong!");
         break;
}

Это слишком дословно. Вы не хотите записывать каждое значение. if более уместно.

...