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

C# params 배열로 메서드에 가변 개수의 매개변수 전달하는 방법

메서드를 선언할 때 몇 개의 인수가 매개변수로 전달될지 미리 알 수 없는 경우가 있습니다. 이럴 때 C#의 매개변수 배열(param array), 즉 params 키워드가 큰 도움이 됩니다.

params 키워드를 사용하면 호출자가 임의의 개수만큼 인수를 넘겨도 컴파일러가 자동으로 배열로 묶어 처리해 줍니다. 기본적인 선언 형태는 다음과 같습니다.

public int AddElements(params int[] arr) {
}

즉, AddElements(1, 2, 3)처럼 호출해도 되고, AddElements(10, 20, 30, 40, 50)처럼 더 많은 값을 넘겨도 모두 정상적으로 동작합니다.

전체 예제

다음은 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();
        }
    }
}

실행 결과

The sum is: 1620

params 사용 시 주의 사항

  • 한 메서드에는 params 매개변수를 하나만 선언할 수 있습니다.
  • params 매개변수는 반드시 매개변수 목록의 마지막에 위치해야 합니다.
  • 인수를 하나도 전달하지 않으면 빈 배열이 전달되므로, 내부에서 null이나 길이 검사를 하는 것이 안전합니다.
  • 배열 자체를 직접 넘기는 것도 가능합니다. 예: app.AddElements(new int[] { 300, 250 })

이처럼 params 키워드를 활용하면 오버로드를 여러 개 만들 필요 없이, 가변 개수의 인수를 유연하게 처리하는 메서드를 간결하게 작성할 수 있습니다.