Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C#에서 매개변수는 어떻게 전달될까요? 값 전달부터 params 배열까지 완벽 정리

C#에서 메서드에 매개변수를 전달하는 방식은 크게 값(value)참조(reference) 두 가지입니다. 여기에 더해 out 매개변수와 params 배열을 활용하면 훨씬 유연하게 인자를 다룰 수 있습니다. 각 방식의 특징과 차이점을 자세히 살펴보겠습니다.

1. 값으로 전달 (Value)

값으로 전달하면 인자의 실제 값이 복사되어 함수의 형식 매개변수에 저장됩니다. 따라서 함수 내부에서 매개변수 값을 아무리 수정해도 호출 측의 원본 인자에는 전혀 영향을 주지 않습니다. 기본 자료형(int, double 등)은 별도 지정이 없으면 이 방식으로 전달됩니다.

2. 참조로 전달 (Reference)

참조로 전달하면 인자가 저장된 메모리 위치에 대한 참조가 복사되어 전달됩니다. C#에서는 ref 키워드를 사용해 구현하며, 이 경우 함수 내부에서 매개변수를 변경하면 그 결과가 원본 인자에 그대로 반영됩니다.

3. Out 매개변수

return 문은 함수에서 하나의 값만 반환할 수 있습니다. 하지만 출력(output) 매개변수를 사용하면 하나의 함수에서 두 개 이상의 값을 반환할 수 있습니다. 출력 매개변수는 참조 매개변수와 비슷하지만, 데이터를 메서드 안으로 받아들이는 것이 아니라 메서드 밖으로 내보내는 데 초점이 있다는 점이 다릅니다.

4. Params 배열

메서드를 선언하는 시점에는 몇 개의 인자가 전달될지 확실하지 않은 경우가 많습니다. 이럴 때 C#의 params 배열을 사용하면 가변 개수의 인자를 하나의 배열로 받아 처리할 수 있습니다.

다음은 C#에서 params를 실제로 구현하는 방법을 보여주는 전체 예제입니다.

예제

using System;

namespace Program {
    class ParamArray {
        public int AddElements(params int[] arr) {
            int sum = 0;

            foreach (int i in arr) {
                sum += i;
            }
            return sum;
        }
    }

    class Demo {
        static void Main(string[] args) {
            ParamArray app = new ParamArray();
            int sum = app.AddElements(300, 250, 350, 600, 120);

            Console.WriteLine("The sum is: {0}", sum);
            Console.ReadKey();
        }
    }
}

위 예제에서 AddElements 메서드는 params int[]를 사용해 전달된 모든 정수를 합산합니다. 실행 결과는 다음과 같습니다.

The sum is: 1620