Aracılığıyla paylaş


switch (C# Reference)

switch Seçen bir denetim deyim ifadesidir bir bölüm geçiş adayları listesinden yürütülecek.

Her anahtar bölümü birini veya birkaçını içeriyor durum etiketi ve bir ya da daha fazla ifadeyi bir listesi.Aşağıdaki örnek, basit bir gösterir switch deyimi üç anahtar bölümü vardır.Her anahtar bölümü gibi bir case etiketinden var. case 1ve iki ifade listesi.

Örnek

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;
}

Her case etiketinden sabit bir değer belirtir.Denetim, durum etiketi değeri sabit bir değer içerir anahtar bölümüne transfer ifade geçiş, caseSwitch.Hiçbir durum etiketi eşleşen bir değer içeriyorsa, denetim için transfer edilir default bölüm varsa.Yoksa hiç default bölümünde, hiçbir işlem yapılmaz ve denetim dışında switch ifadesi.Önceki örnekte, çünkü ilk anahtarı bölümünde deyimleri yürütülür durum etiketi case 1 1 değeri ve değerini belirtir caseSwitch de 1'dir.

A switch deyimi, herhangi bir sayıda anahtar bölümü içerebilir ve her bölüm bir veya daha fazla durum etiketi olabilir.Bununla birlikte, hiçbir iki durum etiketi aynı sabit değer içerebilir.

Seçili bölümü deyiminin listede yürütülmesini ilk deyimi ile başlar ve atlama deyimi, aşağıdaki gibi ulaşılıncaya kadar ekstresi listesi, genellikle devam eder bir break, goto case, return, veya throw.Bu noktada, denetim dışında transfer edilir switch deyimi veya başka bir case etiketinden.

c++ farklı olarak, C# diğerine geçiş bölümünden devam etmek için yürütmeye izin vermez.Aşağıdaki kod bir hata neden olur.

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;
}

C# [NULL]'ta, son bir de dahil olmak üzere her anahtarı bölümün sonuna erişilemiyor gereksinimidir.Bu gereksinim, genellikle bir atlama deyimini kullanarak karşılanır rağmen deyimi listenin sonuna eriştiği için aşağıdaki durum da geçerli değil.

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

Aşağıdaki örnek gereksinimleri ve yeteneklerini gösterir bir switch ifadesi.

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;
        }
    }
}

Son örnekte, tamsayı değişkenini, dize girişi dönüştürülür switchExp, anahtar ifade için kullanılır.Dize değişkeni de kullanılabilir str, doğrudan.Bunu yapmak için aşağıdaki kodda gösterildiği gibi dize değerleri belirtmek için büyük/küçük harf etiketlerini değiştirmek.

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.
*/

C# dil belirtimi

Daha fazla bilgi için bkz: C# dil belirtiminin. Dil belirtimi, C# sözdizimi ve kullanımı için nihai kaynaktır.

Ayrıca bkz.

Başvuru

C# anahtar sözcükler

switch deyimi (C++)

else if (C# Reference)

Kavramlar

C# Programlama Kılavuzu

Diğer Kaynaklar

C# Başvurusu