Я только что обновил свой текущий проект до недавно выпущенных .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
выражений. Или у меня здесь более глубокое недопонимание?