Aracılığıyla paylaş


switch (C# Başvurusu)

switch deyimi, aday listesinden dışlamak üzere bir anahtar bölümü seçen bir denetim deyimidir.

Bir switch deyimi bir ya da daha fazla anahtar bölüm içerebilir.Her switch bölümü bir veya daha fazla durum etiketi ve ardından bir veya daha fazla deyim içerir.Aşağıdaki örnek, üç anahtar bölümü olan basit bir switch deyimini gösterir.Her switch bölümünün, case 1 gibi bir durum etiketi ve iki deyimi vardır.

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

Notlar

Her durum etiketi sabit bir değer belirtir."switch" deyimi, denetimi "case" etiketi switch ifadesiyle eşleşen switch bölümüne (örnekte caseSwitch) aktarır.Hiçbir durum etiketi eşleşen bir değer içermiyorsa, denetim varsa default bölümüne aktarılır.default bölümü yoksa bir eylem yapılmaz ve denetim switch beyanının dışına aktarılır.Önceki örnekte birinci anahtar kısımdaki deyimler case 1 vakasının caseSwitch değeri ile eşleşmesi nedeniyle yürütülür.

Bir switch deyimi herhangi bir sayıda anahtar bölüm içerebilir ve her bir bölüm bir ya da daha fazla durum etiketi içerebilir (aşağıdaki dize durum etiketi örneğinde gösterildiği gibi).Ancak, iki durum etiketi aynı sabit değeri içeremez.

Seçilen switch bölümündeki ifade listesinin yürütülmesi ilk deyimden başlar ve deyim listesi boyunca, genellikle break, goto case, return ya da throw gibi bir atlama deyimine ulaşılıncaya kadar devam eder.Bu noktada denetim switch deyimi dışında veya başka bir durum etiketine aktarılır.

C++ programında farklı olarak, C# bir geçiş bölümünden diğerine devam etmek için yürütmeye izin vermez.Aşağıdaki kod bir hataya 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#, sonuncu da dahil anahtar bölümlerin erişilemez olmasını gerektirir. Diğer bir deyişle, diğer bazı dillerden farklı olarak, kodunuzun sonraki switch bölümüne düşemez. Bu gereksinim sıklıkla bir break deyimi tarafından karşılanırsa da deyim listesinin sonuna ulaşılamamasını garantilediğinden aşağıdaki örnek de geçerlidir.

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

Örnek

Aşağıdaki örnek, bir switch deyiminin gereksinimlerini ve işlevlerini gösterir.

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 dize değişkeni str ve dize vaka etiketleri, yürütmenin akışını denetler.

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 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 (str)
        {
            case "1":
            case "small":
                cost += 25;
                break;
            case "2":
            case "medium":
                cost += 25;
                goto case "1";
            case "3":
            case "large":
                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 edinmek için, bkz. C# Dil Belirtimi. Dil belirtimi, C# sözdizimi ve kullanımı için kesin bir kaynaktır.

Ayrıca bkz.

Başvuru

C# Anahtar Sözcükleri

switch Deyimi (C++)

if-else (C# Başvurusu)

Kavramlar

C# Programlama Kılavuzu

Diğer Kaynaklar

C# Başvurusu