Оператор переключения нескольких переменных в C #

Я хотел бы использовать оператор switch, который принимает несколько переменных и выглядит так:

switch (intVal1, strVal2, boolVal3)
{
   case 1, "hello", false:
      break;
   case 2, "world", false:
      break;
   case 2, "hello", false:

   etc ....
}

Есть ли способ сделать что-то подобное в C #? (Я не хочу использовать вложенные операторы переключения по очевидным причинам).

25
задан Panagiotis Kanavos 11 October 2019 в 07:29
поделиться

1 ответ

Если Вы хотите переключить несколько исходных данных, и возвращают значение , в 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"
    };
2
ответ дан 28 November 2019 в 18:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: