[유니티 / C#] 가변 인자 params

⭐ params 키워드

하나의 메서드 매개변수로 개수가 정해지지 않은 인자들을 배열처럼 받을 수 있게 해주는 키워드입니다.

 

 

선언 형식

 

	void Start()
{
    int[] ints = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };

    int a = Add(ints);               //45
    int b = Add(1, 5, 8, 3, 8, 7);   //32

    Debug.Log(a);
    Debug.Log(b);
}

public int Add(params int[] ints)
{
    int sum = 0;

    foreach(var i in ints)
    {
        sum += i;
    }

    return sum;
}

출력 결과:
45
32

● params 키워드를 통해 인자 배열을 매개 변수로 선언할 수 있습니다.

    ○ params 가변 인자는 매개변수 목록의 맨 마지막에만 선언할 수 있습니다.

        ■ public void Add(int a, int b, params int[] ints) => 가능

        ■ public void Add(params int[] ints, int a, int b) => 불가능

 

● 호출자가 인수를 하나도 남기지 않으면 길이 0의 배열이 전달됩니다.

 

● 한 메서드에 하나만 사용할 수 있습니다.

 

● params 매개 변수는 1차원 배열이어야 합니다.

 

 

사용시 주의해야 할 점

● 너무 큰 데이터를 계속 params로 넘기면 배열 생성 비용이 생길 수 있습니다

 

● 오버로딩과 함께 쓸 때 모호해질 수 있으니 주의해야합니다.

public int TestNum(int a)
{
    return a;
}

public int TestNum(params int[] ints)
{
    return ints[0] + 5;
}

● 두 TestNum 메서드는 인자값으로 1개의 변수만을 받을 수 있기 때문에 모호해집니다.