게임 개발_HISTORY

C# STUDY_TIL251009 [out, ref 키워드] 본문

Development In Unity/Study : C#

C# STUDY_TIL251009 [out, ref 키워드]

EVANJ 2025. 10. 9. 10:35

📝 학습 요약

  • out, ref 키워드

🧩 학습 내용

✔️ out, ref 키워드

메서드가 매개변수를 통해 값을 돌려주는 방법을 제어할 때 사용한다. 즉, 메서드가 리턴값 외에도 여러 개의 값을 반환할 수 있게 해주는 기능이다. 

 

▫️ref 키워드

변수를 참조로 전달해서, 메서드 안에서 수정하면 원본 변수도 함께 바뀐다. 

매서드 안에서 인자의 값을 바꾸면 밖에서도 바뀐 상태가 그대로 유지된다.

void AddTen(ref int number)
{
    number += 10;
}

int value = 5;
AddTen(ref value); // ref를 반드시 같이 써야 함
Console.WriteLine(value); // 출력: 15

value가 메서드에 참조로 전달되므로 number를 바꾸면 value도 바뀐다. 그리고 호출 시에도 ref를 붙여야 한다.

 

▫️out 키워드

메서드가 추가적인 결과값을 돌려줄 때 사용한다. 보통 리턴값 외에 "추가 결과"를 전달할 때 쓴다.

bool Divide(int a, int b, out int result)
{
    if (b == 0)
    {
        result = 0;
        return false; // 실패
    }

    result = a / b;
    return true; // 성공
}

int answer;
if (Divide(10, 2, out answer))
{
    Console.WriteLine($"결과: {answer}");  // 결과: 5
}
else
{
    Console.WriteLine("0으로 나눌 수 없습니다.");
}

result는 out 파라미터로, 함수 내부에서 반드시 값을 설정해야한다. 그리고 호출시 초기값이 없어도 된다.
Divide는 리턴값(true/false)과 out으로 넘긴 값(result) 두가지 결과를 동시에 반환해야한다.

구분 ref out
초기화 필요 여부 반드시 초기화 후 전달 초기화 없이 전달 가능
메서드 내부에서 값 할당 선택적 반드시 해야 함
주 용도 값을 수정할 때 값을 반환할 때
예시 상황 함수 안에서 값 변경 여러 개의 결과 반환