특정한 상황에서 함수의 로직이 더이상 실행되지 않았으면 하는 경우가 있습니다.

예를 들어 체력이 5가 있는데 공격할때마다 1씩 깍이는 기능을 만들었다고 가정하겠습니다.

int hp = 5;

void Attack()
{
		--hp;
		Console.Write("데미지 : 1    현재체력 : " + hp);
}

위코드는 Attack 이라는 함수를 실행할때 마다 체력이 깍고 Console 로 축력해주는 기능입니다.

int hp = 5;

Attack();    // 데미지 : 1    현재체력 : 4
Attack();    // 데미지 : 1    현재체력 : 3
Attack();    // 데미지 : 1    현재체력 : 2
Attack();    // 데미지 : 1    현재체력 : 1
Attack();    // 데미지 : 1    현재체력 : 0
Attack();    // 데미지 : 1    현재체력 : -1
...

void Attack()
{
		--hp;
		Console.Write("데미지 : 1    현재체력 : " + hp);
}

이렇게 공격할때마다 계속 체력이 감소한다면 체력이 0 일때 공격하더라고 체력은 - 로 계속 감소될 것입니다.

이럴때 return 을 활용합니다.

함수에 맨위에 추가해 보겠습니다.

int hp = 5;

Attack();    // Console X
Attack();    // Console X
Attack();    // Console X
...

void Attack()
{
    **return;   <-**
		--hp;
		Console.Write("데미지 : 1    현재체력 : " + hp);
}

실행하면 이번에는 아무런 실행이 되지 않는 것을 볼 수 있습니다.

return 은 해당 코드 밑에 있는 모든 기능을 캔슬하고 함수를 종료합니다.

CleanShot 2023-07-11 at 01.34.05@2x.png

return이 맨 위에 있기 때문에 실행해도 아무런 기능도 동작하지 않았던 것입니다.

조건에 의해서만 return 이 동작하도록 만들어보겠습니다.

int hp = 5;

Attack();    // 데미지 : 1    현재체력 : 4
Attack();    // 데미지 : 1    현재체력 : 3
Attack();    // 데미지 : 1    현재체력 : 2
Attack();    // 데미지 : 1    현재체력 : 1
Attack();    // 데미지 : 1    현재체력 : 0
Attack();    // Console X
...

void Attack()
{
		if(hp < 1)
		{
		    **return;   <-**
		}

		--hp;
		Console.Write("데미지 : 1    현재체력 : " + hp);
}