C#/C# 강좌

C# 점프문 - 반목문 빠져나가거나 건너띄기 할 때 | break, continue, return, goto

DragonTory 2023. 2. 24. 11:38
반응형

C# 점프문 - 반목문 빠져나가기 건너띄기 | break, continue, return, goto

 

C#에서 jump 문은 프로그램의 다른 부분으로 제어를 옮길 때 사용됩니다.

C#에는 네 가지 유형의 점프 문이 있습니다.

1. break 문: 현재 루프나 switch 문에서 빠져 나올 때 사용합니다.

2. continue 문: 루프의 현재 반복을 건너뛰고 다음 반복을 계속하는 데 사용됩니다.

3. goto 문: 프로그램의 다른 위치에 있는 레이블이 지정된 문으로 제어를 이전하는 데 사용됩니다. 그러나 일반적으로 나쁜 프로그래밍 방식으로 간주되며 드물게 사용해야 합니다.

4. return 문: 메서드를 종료하고 호출한 메서드에 값을 반환하는 데 사용됩니다.

다음은 for 루프에서 break 및 continue 문을 사용하는 방법을 보여주는 예입니다.

for (int i = 0; i < 10; i++)
{
    if (i == 5)
        break; // exit the loop when i equals 5
    if (i % 2 == 0)
        continue; // skip even numbers
    Console.WriteLine(i);
}

이 예제에서 break 문은 i가 5일 때 루프를 종료하는 데 사용되고 continue 문은 짝수를 건너뛰고 루프의 다음 반복을 계속하는 데 사용됩니다.

 

break 문:

 

break 키워드는 루프 또는 switch 문을 즉시 종료하는 데 사용됩니다. 일반적으로 특정 조건이 충족되고 더 이상 반복하거나 처리할 필요가 없을 때 사용됩니다.

다음은 while 루프에서 break 문을 사용하는 방법을 보여주는 예입니다.

int i = 0;
while (i < 10)
{
    Console.WriteLine(i);
    if (i == 5)
        break; // exit the loop when i equals 5
    i++;
}

이 예에서 break 문은 i가 5일 때 루프를 종료하는 데 사용됩니다. break 문이 없으면 i가 10에 도달할 때까지 루프가 계속 반복됩니다.

break 문은 switch 문에서 조기에 switch 블록을 종료하는 데 사용할 수도 있습니다. 

예를 들면 다음과 같습니다.

int num = 2;
switch (num)
{
    case 1:
        Console.WriteLine("One");
        break;
    case 2:
        Console.WriteLine("Two");
        break; // exit the switch block after printing "Two"
    case 3:
        Console.WriteLine("Three");
        break;
    default:
        Console.WriteLine("Invalid number");
        break;
}


이 예에서 break 문은 num이 2인 경우 다음에 사용되며, 이로 인해 스위치 블록이 "Two"를 인쇄한 후 조기에 종료됩니다.

 

continue 문:

continue 키워드는 루프의 현재 반복을 즉시 건너뛰고 다음 반복을 계속하는 데 사용됩니다. 일반적으로 특정 조건이 충족되고 현재 반복에 대해 나머지 코드를 실행할 필요가 없을 때 사용됩니다.

다음은 for 루프에서 continue 문을 사용하는 방법을 보여주는 예입니다.

for (int i = 0; i < 10; i++)
{
    if (i % 2 == 0)
        continue; // skip even numbers
    Console.WriteLine(i);
}

이 예에서 continue 문은 짝수를 건너뛰고 루프의 다음 반복을 계속하는 데 사용됩니다. continue 문이 없으면 루프 내의 코드는 짝수인 경우에도 i의 모든 값에 대해 실행됩니다.

continue 문은 while 또는 do-while 루프에서도 비슷한 방식으로 사용할 수 있습니다. 예를 들면 다음과 같습니다.

int i = 0;
while (i < 10)
{
    i++;
    if (i % 2 == 0)
        continue; // skip even numbers
    Console.WriteLine(i);
}

이 예에서 continue 문은 짝수를 건너뛰고 루프의 다음 반복을 계속하는 데 사용됩니다. continue 문이 없으면 루프 내의 코드는 짝수인 경우에도 i의 모든 값에 대해 실행됩니다.

 

goto 문:

 

goto 문은 동일한 메서드 내에서 레이블이 지정된 문으로 제어를 전송하는 데 사용됩니다. goto 문은 종종 코드의 한 부분에서 루프, 조건문 및 메서드 호출과 같은 일반적인 제어 흐름 문으로 도달할 수 없는 다른 부분으로 점프를 구현하는 데 사용됩니다.

다음은 goto 문을 사용하는 방법의 예입니다.

start:
Console.WriteLine("Enter a number:");
int num = int.Parse(Console.ReadLine());

if (num <= 0)
    goto start; // jump back to the start label

Console.WriteLine("The number you entered is: " + num);

이 예에서 goto 문은 사용자가 양수가 아닌 숫자를 입력하는 경우 시작 레이블로 다시 이동하는 데 사용됩니다. goto 문이 없으면 오류 메시지를 인쇄한 후 프로그램이 종료됩니다.

goto 문의 잦은 사용은 코드를 읽고 이해하기 어렵게 만들 수 있으므로 goto 문을 주의해서 사용하는 것이 중요합니다. 일반적으로 goto 문 대신 루프, 조건문 및 메서드 호출과 같은 구조화된 제어 흐름 문을 사용하는 것이 좋습니다.

 

return 문:

 

return 문은 메서드를 종료하고 호출 메서드에 값을 반환하는 데 사용됩니다. return 문은 메서드가 값을 반환하는지 여부에 따라 값을 포함하거나 포함하지 않고 사용할 수 있습니다.

다음은 return 문을 사용하여 값을 반환하는 메서드의 예입니다.

public int Add(int a, int b)
{
    int sum = a + b;
    return sum;
}

이 예제에서 Add 메서드는 두 개의 정수를 입력 매개 변수로 사용하고 함께 더한 다음 return 문을 사용하여 결과를 정수 값으로 반환합니다.

return 문은 값을 반환하지 않고 메서드를 종료하기 위해 값 없이 사용할 수도 있습니다. 

public void DisplayMessage(string message)
{
    if (string.IsNullOrEmpty(message))
        return; // exit the method if the message is null or empty

    Console.WriteLine(message);
}

이 예제에서 DisplayMessage 메서드는 문자열을 입력 매개 변수로 사용하고 문자열이 null인지 비어 있는지 확인하고 문자열이 null이거나 비어 있으면 return 문을 사용하여 메서드를 종료합니다. 문자열이 null이 아니거나 비어 있지 않으면 메서드는 계속해서 실행되고 Console.WriteLine 문을 사용하여 메시지를 표시합니다.

return 문은 루프 또는 스위치 블록 안에 배치하여 루프 또는 스위치 문을 조기에 종료하는 데 사용할 수도 있습니다. return 문이 실행되면 제어가 즉시 호출 메서드로 다시 전송됩니다.

또 다른 예로 return 문은 switch 문에서 조기에 switch 블록을 종료하고 호출 메서드에 값을 반환하는 데 사용할 수 있습니다. switch문에서 return 문이 실행되면 제어가 즉시 호출 메서드로 다시 넘어 가고 메서드가 종료 되게 됩니다.

다음은 return 문을 사용하는 switch 문의 예입니다.

public string GetDayOfWeek(int dayNumber)
{
    switch (dayNumber)
    {
        case 0:
            return "Sunday";
        case 1:
            return "Monday";
        case 2:
            return "Tuesday";
        case 3:
            return "Wednesday";
        case 4:
            return "Thursday";
        case 5:
            return "Friday";
        case 6:
            return "Saturday";
        default:
            return "Invalid day number";
    }
}

 

 

 

반응형