프로그래밍 강의/C#

C# 6.0, goto 문

wnsrn3436 2017. 7. 2. 20:18
using System;
using static System.Environment;
 
class Program
{
    static void Main(string[] args)
    {
        string option = "/exit";
        switch (option)
        {
            case "/exit":
                Console.Write("/exit ");
                goto case "/writeBye";
            case "/writeHI":
                break;
            case "/writeBye":
                Console.Write("bye!" + NewLine);
                goto default;
            case "/writeCopyright":
                break;
            default:
                goto gotoLable;
        }
        Console.WriteLine("It will be silent.");
        gotoLable: Console.WriteLine(@"Better the last smile than the first laughter. 
Yes, I know that everything comes to those who wait.");
    }
}


goto의 사용은 현대의 프로그래밍에서는 권장하지 않고 있지만, switch 문 내에서의 제어이동을 위해 C#에서는 goto문을 제한적으로 허용한다.


- switch 문의 섹션 레이블로 분기하려면 'goto case 상수;' 구문을 사용한다.

- switch 문의 default 레이블로 분기하려면 'goto default;' 구문을 사용한다.

- switch 문의 섹션 레이블 외의 레이블로 분기하려면 '레이블 : 코드'를 작성한 뒤, 'goto 레이블명;'을 사용한다. 여기서 제약사항이 있는데, 이러한 goto 문이 코드 블록 내에서 분기하거나 바깥쪽 코드 블록으로 분기하는 데에만 사용될 수 있다는 것이다.


goto 문은 가독성에 혼란을 주기 때문에 사용을 지양해야 하지만, switch 문에서나 중첩된 반복문을 한번에 빠져나갈 때 유용하게 사용할 수 있다는 것을 알아두면 좋다.

Comments