ref 형식 파라미터와 짝을 이루는 out 형식 파라미터에 대한 설명은 아래 글 참고.
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 키워드와는 다르게 값을 반드시 초기화할 필요가 없다.
'.NET > C#' 카테고리의 다른 글
[C#] 문자열 01 - Split()으로 문자열 분할하기 (0) | 2021.10.17 |
---|---|
[C#] try~catch~finally 구문 사용법 (0) | 2021.09.27 |
[C#] 속성(Property)이란 무엇인가? (0) | 2021.09.20 |
[C#] out 형식 파라미터 사용법 (0) | 2021.08.15 |
[C#] ThreadPool 사용법 (0) | 2021.08.12 |