게임개발/스터디

[스터디] ref/out 차이

감물 2024. 5. 7. 15:46

'ref'와 'out' 키워드는 메서드에 매개변수를 전달할 때 사용되며, 변수의 참조를 직접 전달한다. 두 키워드는 비슷하지만 사용 방식에 차이가 있다.

 

1. ref

메서드에 변수를 참조로 전달할 때 사용한다. 이를 사용하면 메서드 내에서 매개변수의 값을 변경할 수 있으며 ( C++ 포인터, call by reference, 주소값 전달과 비슷한 기능), 변경된 값이 원래의 변수에 반영된다.  'ref'를 사용하려면 메서드를 호출하기 전에 변수가 초기화되어 있어야 한다.

 

void Modify(ref int value) 
{
    value += 10;
}

int num = 5;
Modify(ref num);
Debug.Log(num);  // 출력: 15

 

 

 

2. out

'out' 키워드도 메서드에 변수를 참조로 전달할 때 사용하지만, 주로 메서드에서 출력 값을 반환할 목적으로 사용된다. 'out' 매개변수는 메서드 내에서 반드시 할당되어야 하며, 초기화되지 않은 상태로 메서드에 전달될 수 있다. 이는 메서드가 매개변수의 초기 값을 무시하고, 새로운 값을 설정한다는 것을 의미한다.

 

void GetValues(out int a, out int b)
{
    a = 5;
    b = 10;
}

int x, y;
GetValues(out x, out y);
Debug.Log(x);  // 출력: 5
Debug.Log(y);  // 출력: 10

 

 

 

'ref'와 'out'은 특히 여러 값을 반환하거나, 상태를 업데이트 하는데 유용하게 사용할 수 있다.