.NET/C#
[C#] ref 형식 파라미터 사용법
Dv Jm
2021. 9. 21. 02:19
ref 형식 파라미터와 짝을 이루는 out 형식 파라미터에 대한 설명은 아래 글 참고.
[C#] out 형식 파라미터 사용법
메서드에서 두 개 이상의 값을 반환해야 하는 경우는 매우 빈번하다. 하지만 반환형이 void가 아닌 메서드에 대해서 반환 값은 반드시 1개만 존재할 수 있다. 이러한 경우 out 형식 파라미터를 사
cs-solution.tistory.com
ref 형식 파라미터는 값 형식 변수를 메서드의 파라미터로 전달하는 경우에도 참조 형식 변수처럼 메서드 내부에서 메서드 외부에 존재하는 실제 변수에 접근하여 값을 변경할 수 있도록 해주는 키워드이다. 쉽게 말해서 C/C++의 포인터이다.
가장 좋은 사용 예는 역시 두 변수의 값을 서로 바꿔주는 Swap 메서드이다.
1. Swap 메서드를 C++로 구현
void swap(int* a, int* b)
{
int tmp = *a;
*a = *b;
*b = tmp;
}
int main()
{
int a = 10, b = 5;
cout << "a = " << a << ", b = " << b << endl;
swap(&a, &b);
cout << "a = " << a << ", b = " << b << endl;
return 0;
}
2. Swap 메서드를 C#으로 구현
void Swap(ref int a, ref int b)
{
int tmp = a;
a = b;
b = tmp;
}
static void Main(string[] args)
{
int a = 10, b = 5;
Console.WriteLine($"a = {a}, b = {b}");
Swap(ref a, ref b);
Console.WriteLine($"a = {a}, b = {b}");
}
위 두 코드는 완전히 동일한 결과를 가진다.
추가적으로, ref 키워드는 out 키워드와는 다르게 값을 반드시 초기화할 필요가 없다.