Я хотел бы использовать оператор switch, который принимает несколько переменных и выглядит так:
switch (intVal1, strVal2, boolVal3)
{
case 1, "hello", false:
break;
case 2, "world", false:
break;
case 2, "hello", false:
etc ....
}
Есть ли способ сделать что-то подобное в C #? (Я не хочу использовать вложенные операторы переключения по очевидным причинам).
Если Вы хотите переключить несколько исходных данных, и возвращают значение , в C# 8 можно использовать шаблоны кортежа . Это - форма выражения переключателя сопоставления с образцом, который принимает несколько значений как вход в форме кортежа. Вот пример с помощью исходных данных; отметьте использование _
для случая по умолчанию:
public static string SwitchDemo(int intVal1, string strVal2, bool boolVal3) =>
(intVal1, strVal2, boolVal3) switch
{
(1, "hello", false) => "Combination1",
(2, "world", false) => "Combination2",
(2, "hello", false) => "Combination3",
_ => "Default"
};
Вот более иллюстративный пример ( скала, бумага, ножницы игра) из статьи MSDN, связанной выше:
public static string RockPaperScissors(string first, string second)
=> (first, second) switch
{
("rock", "paper") => "rock is covered by paper. Paper wins.",
("rock", "scissors") => "rock breaks scissors. Rock wins.",
("paper", "rock") => "paper covers rock. Paper wins.",
("paper", "scissors") => "paper is cut by scissors. Scissors wins.",
("scissors", "rock") => "scissors is broken by rock. Rock wins.",
("scissors", "paper") => "scissors cuts paper. Scissors wins.",
(_, _) => "tie"
};