Я только что обновил свой текущий проект до недавно выпущенного .NET Standard 2.1 и C # 8.0 и решил преобразовать некоторые большие операторы switch
в новый, гораздо более компактный синтаксис выражений .
Поскольку возвращаемые значения в дальнейшем используются в некоторых вычислениях, мне было интересно, как ведут себя новые выражения switch
, когда входная переменная находится рядом с оператором.
Возьмем следующий пример для конкатенации строк:
string input = Console.ReadLine();
string output = "Letter: " + input switch
{
"1" => "a",
"2" => "b",
_ => "else"
};
Console.WriteLine(output);
Я предполагаю, что switch
очень сильно связывается с переменной input
и, таким образом, вычисляется первым.И действительно, это печатает Letter: a
, когда я набираю 1
.
Но мой вопрос сейчас такой: Применимо ли это поведение к любому оператору?
Из моегоВ ходе экспериментов мне не удалось определить условие, при котором вышеприведенная гипотеза не выполняется, но это, очевидно, не означает, что я не пропустил ни одного случая.Документы также не упоминают приоритет операторов в контексте switch
выражений.Или у меня здесь есть более глубокое недоразумение?