Notice
Recent Posts
Recent Comments
Link
관리 메뉴

nomad-programmer

[Programming/C#] goto 문 본문

Programming/C#

[Programming/C#] goto 문

scii 2020. 9. 7. 00:36
goto 레이블;

레이블:
	// 코드

goto 문은 레이블이 가리키는 곳으로 바로 뛰어 넘어간다. 

상당수의 프로그래머들은 goto문을 별로 좋아하지 않는다. goto문이 코드의 흐름을 자주 끊어 읽기 어렵게 만들기 때문이다. 

컴퓨터 과학 학계에서는 "goto의 해악"을 주제로 하는 논문도 여러 편 발표된적이 있다.

그럼에도 불구하고 goto문도 유용한 경우가 있는데. 다음 코드처럼 대표적인 예가 중첩된 반복문을 단번에 뚫고 나오기 위해 사용하는 것이다.

using System;

namespace CSharpExam
{
    class GotoExample
    {
        static int Main(string[] args)
        {
            Console.Write("종료 조건 입력: ");

            string input = Console.ReadLine();

            int input_number = Convert.ToInt32(input);
            int exit_number = 0;

            for (int i = 0; i < 2; i++)
            {
                for (int j = 0; j < 2; j++)
                {
                    for (int k = 0; k < 3; k++)
                    {
                        if (exit_number++ == input_number)
                            goto EXIT_FOR;

                        Console.WriteLine(exit_number);
                    }
                }
            }

            goto EXIT_PROGRAM;

        EXIT_FOR:
            Console.WriteLine("\nExit nested for...");

        EXIT_PROGRAM:
            Console.WriteLine("Exit program...");

            return 0;
        }
    }
}

/* 결과

종료 조건 입력: 5
1
2
3
4
5

Exit nested for...
Exit program...

*/
Comments