c#
c# 문법 ref out 키워드의 차이점
범백
2023. 6. 22. 22:38
ref와 out은 매우 비슷한 기능을 가진 키워드 입니다.
매개변수를 전달 할 때 사용 되며 이 둘의 차이점은 변수에 대한 초기화 입니다.
ref 키워드는 초기화 한뒤 사용하여야 하고 out키워드는 초기화가 필요 없고 이전의 값이 모두 무시된다는 점에 있습니다.
예제를 보겠습니다.
public void RefOut()
{
int x = 2; //변수 2
int y = 2; // out,ref에 사용할 변수
RefIn(x, ref y);
Console.WriteLine(x + ", " + y);
MessageBox.Show(y.ToString());
RefIn(x, ref y);
MessageBox.Show(y.ToString());
OutIn(x, out y);
MessageBox.Show(y.ToString());
OutIn(x, out y);
MessageBox.Show(y.ToString());
}
// ref 활용 곱셈
public void RefIn(int a, ref int rf)
{
rf = a * rf;
}
//out 활용 곱셈
public void OutIn(int a, out int ot)
{
ot=0; //out키워드는 선언을 하지 않으면 컴파일 에러 발생
ot = a * ot;
}
위의 예제를 실행할 시 ref y의 값은 8 out키워드를 사용한 y의 값은 0으로 ref는 변수가 할당 된 상태로 쓸 수 있다는 점이며
out 키워드는 변수를 무조건 재 선언하여 지정 해야 한다는 점이 가장 큰 차이입니다.
즉 ref는 기존의 내용을 담고 있기에 연속된 상황에서 쓰는 것이 아니라면 초기화를 해서 사용하여야하며 out은 그럴 필요없이 메서드 내에서 다시 재선언 해서 사용하기 때문에 따로 초기화 하는 것에 신경 쓸 필요 없습니다.