class Calculator
{
public static int Plus(int a, int b)
{
Console.WriteLine("Input : {0}, {1}", a, b);
int result = a + b;
return result;
}
}
class MainApp
{
public static void Main()
{
int x = 3;
int y = 4;
int result = Calculator.Plus(x, y);
}
}
MainApp.Main() 메소드 안에서 선언되어 Calculator.Plus() 메소드에 인수로 넘겨진 x와 y는 실제로
Calculator.Plus() 메소드 안으로 들어가는 걸까?
답은 “아니다” 입니다. 메소드 외부로부터 메소드 내부로 데이터를 전달받는 매개체 역할을 할 뿐이지, 매개변수도 근본적으로 “변수” 입니다. 한 변수를 또 다른 변수에 할당하면 변수가 담고 있는 데이터만 복사할 뿐입니다. 그 데이터가 값이든 참조든 간에 말입니다.
Calculaotr.Plus() 메소드가 호출될 경우 x가 담고 있는 데이터 3은 매개변수 a로, y가 담고 있는
데이터 4는 매개변수 b로 복사가 이루어집니다.
a는 x가 가진 것과 똑같은 데이터를 갖고 있지만, a와 x는 완전히 별개의 메모리 공간을 사용합니다.
그러므로 a를 수정한다고 해도 x는 아무런 영향을 받지 않습니다.