読者です 読者をやめる 読者になる 読者になる

プログラムの事とか

お約束ですが「掲載内容は私個人の見解です」

goto文の使い道

C#

バグの原因になるからと避けていたり、よほどのことが無い限り使わなくなったgoto文ですが、昔の私が変なもの書いていたのでブログネタに

C#のコンソールアプリで

static void Main(string[] args)
{
    for (var i = 0; i < 4; i++)
    {
        Console.WriteLine($"\nFunc({i})");
        Func(i);
    }
    Console.ReadLine();
}

static void Func(int i)
{
    switch (i)
    {
    case 0:
        Console.WriteLine("case 0:");
        break;
    case 1:
        Console.WriteLine("case 1:");
        goto case 0;
    case 2:
        Console.WriteLine("case 2:");
        goto default;
    default:
        Console.WriteLine("default:");
        break;
    }
}

と書いて実行します

結果はこんな感じ

Func(0)
case 0:

Func(1)
case 1:
case 0:

Func(2)
case 2:
default:

Func(3)
default:

MSDNにもswitch-caseラベルに移動できるって書いてありました

goto (C# リファレンス)

知らなかった(過去に私はこれを使っているようなので忘れていたが正解)

まぁ・・・つかわないですよねー