[c#] 메서드 호출 방식 (값 호출, 참조 호출)

C#에서는 메서드를 호출할 때 값 호출과 참조 호출 두 가지 방식을 사용할 수 있습니다.

값 호출 (Call by Value)

값 호출은 메서드에 값을 전달하는 방식으로, 메서드 내에서 매개변수의 값을 변경해도 원본 변수에는 영향을 주지 않습니다.

class Program
{
    static void Main()
    {
        int num = 10;
        Method(num);
        Console.WriteLine(num);  // 출력: 10
    }
  
    static void Method(int value)
    {
        value = 20;
    }
}

메서드의 매개변수로 값을 전달하므로, 메서드 내에서 매개변수 값을 변경해도 호출하는 쪽의 변수에는 영향을 주지 않습니다.

참조 호출 (Call by Reference)

참조 호출은 매개변수로 변수의 참조를 전달하여 메서드 내에서 원본 변수의 값을 변경할 수 있는 방식입니다.

class Program
{
    static void Main()
    {
        int num = 10;
        Method(ref num);
        Console.WriteLine(num);  // 출력: 20
    }

    static void Method(ref int value)
    {
        value = 20;
    }
}

ref 키워드를 사용하여 매개변수를 참조로 전달하면, 메서드 내에서 매개변수를 변경할 때 호출하는 쪽의 변수 값도 영향을 받습니다.

결론

값 호출과 참조 호출은 메서드 호출 시 변수의 값이 전달되는 방식에 차이가 있습니다. 올바른 호출 방식을 선택하여 원하는 동작을 구현할 수 있습니다.

참고 자료