Sdílet prostřednictvím


přepínač (C#-Reference)

switch Příkazu je příkaz Ovládací prvek, který vybere přepínání oddílu spustit ze seznamu kandidátů.

Každý oddíl přepínač obsahuje jeden nebo více případu popisky a seznam jednoho nebo více příkazů.Následující příklad ukazuje jednoduchou switch příkaz, který má tři části přepínač.Každý oddíl přepínač má jednoho návěstí příkazu case, jako například case 1a seznam dva příkazy.

Příklad

int caseSwitch = 1;
switch (caseSwitch)
{
    case 1:
        Console.WriteLine("Case 1");
        break;
    case 2:
        Console.WriteLine("Case 2");
        break;
    default:
        Console.WriteLine("Default case");
        break;
}

Každý popisek případu určuje hodnotu konstanty.Ovládací prvek bude převeden na přepínač oddílu, jehož případu popisek obsahuje konstantní hodnotu, která odpovídá hodnotě Přepnout výraz, caseSwitch.Pokud žádný případ popisek obsahuje odpovídající hodnotu, je ovládací prvek převeden do default , pokud je jeden oddíl.Pokud je bez default části provedena žádná akce a ovládací prvek bude převeden mimo switch prohlášení.V předchozím příkladu jsou spouštěny příkazy v první části přepínač, protože popisek případu case 1 Určuje hodnotu 1 a hodnoty caseSwitch je také 1.

A switch příkaz může obsahovat libovolný počet oddílů přepínač a každý oddíl může obsahovat jeden nebo více štítků případu.Žádné dva popisky případu však může obsahovat stejnou hodnotu konstanty.

Spuštění příkazu seznamu v části vybrané začíná první příkaz a pokračuje přes seznam příkazů obvykle až do dosažení výpis odkazů, jako break, goto case, return, nebo throw.V tomto okamžiku je ovládací prvek převeden mimo switch prohlášení nebo jiný popisek případu.

Na rozdíl od C++ C# neumožňuje pokračovat z jednoho oddílu přepnout na další spuštění.Následující kód způsobí chybu.

switch (caseSwitch)
{
    // The following switch section causes an error.
    case 1:
        Console.WriteLine("Case 1...");
        // Add a break or other jump statement here.
    case 2:
        Console.WriteLine("... and/or Case 2");
        break;
}

Požadavek v jazyce C# je nedosažitelný konci každé části přepínač včetně konečného jeden.Ačkoli tento požadavek je obvykle splnit pomocí příkazu skoku, následující případ také platí, protože nelze dosaženo konce seznamu příkazů.

case 4:
    while (true)
        Console.WriteLine("Endless looping. . . .");

Následující příklad ukazuje požadavky a možnosti switch prohlášení.

class Program
{
    static void Main(string[] args)
    {
        int switchExpression = 3;
        switch (switchExpression)
        {
            // A switch section can have more than one case label.
            case 0:
            case 1:
                Console.WriteLine("Case 0 or 1");
                // Most switch sections contain a jump statement, such as
                // a break, goto, or return. The end of the statement list
                // must be unreachable.
                break;
            case 2:
                Console.WriteLine("Case 2");
                break;
                // The following line causes a warning.
                Console.WriteLine("Unreachable code");
            // 7 - 4 in the following line evaluates to 3.
            case 7 - 4:
                Console.WriteLine("Case 3");
                break;
            // If the value of switchExpression is not 0, 1, 2, or 3, the
            // default case is executed.
            default:
                Console.WriteLine("Default case (optional)");
                // You cannot "fall through" any switch section, including
                // the last one.
                break;
        }
    }
}

V konečné příkladu vstupní řetězec převést na celočíselnou proměnnou switchExp, který je použit výraz přepínače.Také můžete použít proměnnou řetězce str, přímo.K tomu by změna případu popisků k určení hodnoty řetězce, jak je znázorněno v následujícím kódu.

switch(str)
{
    case "1":
        // ...
    case "2":
        // ...
}
class SwitchTest
{
    static void Main()
    {
        Console.WriteLine("Coffee sizes: 1=Small 2=Medium 3=Large");
        Console.Write("Please enter your selection: ");
        string str = Console.ReadLine();
        int switchExp = int.Parse(str);
        int cost = 0;

        // Notice the goto statements in cases 2 and 3. The base cost of 25
        // cents is added to the additional cost for the medium and large sizes.
        switch (switchExp)
        {
            case 1:
                cost += 25;
                break;
            case 2:
                cost += 25;
                goto case 1;
            case 3:
                cost += 50;
                goto case 1;
            default:
                Console.WriteLine("Invalid selection. Please select 1, 2, or 3.");
                break;
        }
        if (cost != 0)
        {
            Console.WriteLine("Please insert {0} cents.", cost);
        }
        Console.WriteLine("Thank you for your business.");
    }
}
/*
    Sample Input: 2

    Sample Output:
    Coffee sizes: 1=Small 2=Medium 3=Large
    Please enter your selection: 2
    Please insert 50 cents.
    Thank you for your business.
*/

Specifikace jazyka C#

Další informace naleznete v tématu Specifikace jazyka C#. Specifikace jazyka je úplným a rozhodujícím zdrojem pro syntaxi a použití jazyka C#.

Viz také

Referenční dokumentace

Klíčová slova jazyka C#

přepínač příkazu (C++)

Pokud jiný (C#-Reference)

Koncepty

Příručka programování C#

Další zdroje

C#-Reference