Unity C#의 ref / out 복습

ref란?

참조에 의한 매개 변수 전달, 값이 할당된 변수를 사용해야 한다

void Swap(int x, int y)
{
	int temp = y;
    	int y = x;
    	int x = temp;
}

void main()
{
	int x = 3;
    	int y = 4;
    	Swap(x,y);
    
    	print(x,y); //결과 x : 3, y : 4
}

 

Swap메서드를 통해 x,y값이 바꾸길 바랬지만 바뀌지 않는다

 

ref키워드를 매개 변수 앞에 붙여주기만 하면 된다

 

void Swap(ref int x, ref int y)
{
	int temp = y;
    	int y = x;
    	int x = temp;
}

void main()
{
	int x = 3;
    	int y = 4;
    	Swap(ref x, ref y);
    
    	print(x, y);  //결과 x : 4, y : 3
}

int x, y에는 값 초기화 필요!

 

out이란?

출력 전용 매개 변수, 할당된 변수에 값을 줘야 함, 값 초기화 필요 없음

void Swap(out int x, out int y)
{
	x = 3;
    	y = 4;
	int temp = y;
    	int y = x;
    	int x = temp;
}

void main()
{
	int x; //값 초기화 필요없음
    	int y;
    	Swap(out x, out y);
    
    	print(x, y);  //결과 x : 4, y : 3
}

 

ref 와 out의 차이점

ref 참조는 반드시 변수가 초기화 되어서 전달 되어야 하고

out 참조는 변수 초기화 하지 않아도 전달이 된다