프로그래밍/(도서)C#코딩의기술-실전

[C#] 코딩의기술(실전편) - 2.9 Goto 구문

Victory_HA 2022. 3. 31. 22:30

goto 구문

  • goto 문은 레이블이 지정된 곳으로 직접 프로그램 컨트롤을 전송합니다.
  • 일반적으로 switch 문에서 switch-case 레이블 또는 기본 레이블로 컨트롤을 전송하는 데 사용됩니다.

goto 사용 예제1

  • switch문에서 사용 예제를 확인해봅시다.
  • n 변수에 2를 입력받으면 switch문의 case2의 코드를 실행 후 goto문을 만나게 되면서 case 1으로 이동하여 코드를 수행하게됩니다.
  • 3을 입력받으면 case3 -> case2 -> case1 조건으로 이동하여 코드를 수행하게됩니다.goto 사용 예제2
  • static void Main(string[] args) { string s = Console.ReadLine(); int n = int.Parse(s); int cost = 0; switch(n) { case 1 : cost += 10; break; case 2: cost += 10; goto case 1; case 3: cost += 10; goto case 2; default: Console.Write("Invalid selection."); break; } Console.WriteLine($"n = {n}, cost = {cost}"); }
  • C#에서는 C언어의 goto문 만큼 자유롭게 이동할 수 없습니다.
    • 특정 코드의 블록의 "바깥쪽"으로 코드 순서를 옮길 수 있지만, "안쪽"으로는 이동할 수 없습니다.
static void Sample_Goto_Outside()
{
    {
        goto label; //코드 블록 바깥쪽으로 이동
    }
label:
    Console.WriteLine("Finished");
}

static void Sample_Goto_Inside()
{
    goto label; //코드 블록 안쪽으로 이동
    {
    label:
        Console.WriteLine("Finished");
    }
}

정리

  • goto문을 사용하면 프로그램의 흐름이 바뀌므로 스파게티 코드가 되어 해석하기 어려울 수 있습니다.