메서드 내에서 참조 매개변수의 값을 수정하면, 종이에 쓰여진 내용을 변경하는 것이므로 메서드 반환 이후에도 변경된 내용이 호출 측에 그대로 보이게 된다. 같은 종이 조각을 사용하기 때문이다.
Note ≡
참조 매개변수와 변수를 다르게 설명하기도 한다. 어떤 이는 참조 매개변수를 다른 변수들과 완전히 별개의 것으로 구분하기도 한다. 참조 매개변수는 단지 간접 참조를 자동으로 수행하는 계층만을 가지고 있고, 이를 통해 참조 매개변수의 값에 간접적으로 접근한다는 것이다. 사실 이러한 설명이 IL 수준에서 이루어지는 작업과 좀 더 비슷하지만, 크게 도움이 되는 것 같지는 않다.
각각의 참조 매개변수별로 서로 다른 종이 조각을 사용할 필요는 없다. 다음 예는 다소 극단적이지만 참조 지역 변수로 넘어가기 전에 전반적인 이해도를 확인하는 데 유용하다.
예제 13-1 여러 개의 참조 매개변수에 동일한 변수를 사용 ▶ RefParameterRecap.cs
static void Main()
{
int x = 5;
IncrementAndDouble(ref x, ref x);
Console.WriteLine(x);
}
static void IncrementAndDouble(ref int p1, ref int p2)
{
p1++;
p2 *= 2;
}