특정한 상황에서 함수의 로직이 더이상 실행되지 않았으면 하는 경우가 있습니다.
예를 들어 체력이 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 은 해당 코드 밑에 있는 모든 기능을 캔슬하고 함수를 종료합니다.
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);
}