static void SetValueRef(ref int num)
{
// 값의 변경은 필요가 없다.
// 해도 되긴 함.
num = 300;
}
static void Main(string[] args)
{
int i = 10;
//int i; => X
SetValueRef(ref i);
Console.WriteLine(i); // 300
}
static void SetValueOut(out int num)
{
// 참조로 받은 매개변수에 값의 할당 필수
num = 300;
}
static void Main(string[] args)
{
int i; //초기 할당 필요 없다.
SetValueOut(out i);
Console.WriteLine(i); // 300
}
static void SetValue(ref int num)
{
num = 300;
}
static void SetValue(out int num)
{
num = 300;
}
위에서 말했듯이 컴파일 시에 ref와 out은 동일한 것으로 인식되기 때문에, 컴파일 시에 위의 코드는 아예 똑같은 함수 2개를 써놨다고 볼 수 있다.