Да, в языке C# можно использовать значение переменной в условии case в операторе switch. Это позволяет создавать более гибкие конструкции управления потоком выполнения программы.
В простейшем случае, вместо указания конкретного значения в условии case, можно использовать переменную, например:
int x = 5; switch (x) { case 5: Console.WriteLine("Переменная равна 5"); break; case 10: Console.WriteLine("Переменная равна 10"); break; default: Console.WriteLine("Переменная имеет другое значение"); break; }
В этом примере выполняется проверка значения переменной x
на соответствие каждому из значений в условиях case. Если значение x
равно 5, выводится соответствующее сообщение. Если значение x
равно 10, выводится другое сообщение. Если значение x
не равно ни 5, ни 10, то выполняется блок кода в разделе default.
Кроме того, в C# 7.0 и более поздних версиях, можно использовать выражения в условиях case. Это позволяет использовать выражения, в которых присутствует не только простое значение переменной, но и операции сравнения или другие более сложные условия.
int x = 5; switch (x) { case int n when n > 0 && n < 10: Console.WriteLine("Переменная находится в диапазоне от 1 до 9"); break; case int n when n <= 0 || n >= 10: Console.WriteLine("Переменная находится вне диапазона от 1 до 9"); break; default: Console.WriteLine("Неизвестное значение переменной"); break; }
В этом примере используются условия case, которые проверяют диапазон значения переменной x
. Если значение переменной находится в диапазоне от 1 до 9, выводится соответствующее сообщение. Если значение переменной находится вне этого диапазона, выводится другое сообщение. Если значение переменной не соответствует ни одному из указанных условий, выполняется блок кода в разделе default.
Таким образом, в языке C# можно использовать и простые значения переменных, и сложные выражения в условиях case, что позволяет создавать более гибкие и удобочитаемые конструкции управления потоком выполнения программы.