📒 갈무리 - ref & out
📌 ref & out의 공통점
- 값 형식의 매개 변수의 주소 값을 참조하여, 복사해서 변경하는 것이 아닌 직접 변경하는 데 사용하는 키워드
- 런타임에 다르게 처리되며 컴파일 시간에 동일하게 처리됩니다.
📌 ref와 out의 차이점
- ref는 매개 변수로 전달되기 전에 초기화가 되어있어야 한다.
- out은 매개 변수로 전달되기 전에 초기화할 필요가 없고 이전의 값은 모두 무시된 채로 전달된다.
📌 EX) ref
static void Main(string[] args)
{
int num1 = 1;
int num2 = 2;
Swap(ref num1, ref num2);
Console.WriteLine($"num1 : {num1}, num2 : {num2}");
}
static void Swap(ref int a, ref int b)
{
int temp = a;
a = b;
b = temp;
}
Output:
num1 : 2, num2 : 1
📌 EX) out
static void Main(string[] args)
{
int num1 = 1;
int num2 = 2;
int total = 100;
Add(num1, num2, out total);
Console.WriteLine($"total : {total}");
}
static void Add(int a, int b, out int total)
{
total = a + b;
}
Output:
total : 3
💡 TIP
out 매개 변수는 메서드가 여러 값을 리턴할 때 유용하게 사용된다.
메소드 오버로딩 할 때, 한 메서드가 ref 매개 변수를 사용하고 다른 메서드가 out 매개 변수를 사용하면 메서드 오버로딩 할 수 없다.
Property는 변수가 아니기 때문에 ref 또는 out 매개 변수로 전달될 수 없다.