C# params 키워드 : 가변 개수의 인수

마이크로소프트 params(C# 참조)
https://docs.microsoft.com/ko-kr/dotnet/csharp/language-reference/keywords/params

 

 

# 인자를 여러개 보내고 싶다

public int Sum(int a, int b)
{
	return a + b;
}

public int Sum(int a, int b, int c)
{
	return a + b + c;
}
......

인자가 정해져 있지 않은경우 여러개의 숫자를 합치는 함수를 위와 같이 구현해 볼 수 있을 것이다.

좋지않다. 결국에는 같은 내용인데 반복적으로 만들 뿐이다.

 

여기서 필요한게 params 이다.

  

 

# 인수의 갯수가 정해지지 않은 경우의 초기화

매개변수의 형식 앞에 params를 붙여주면 가변 개수의 매개변수를 보낼 수 있다.

    public void Test(params int[] numbers){}

    public void Start()
    {
        Test(0);
        Test(0, 1, 2, 3);
        Test(new int[] { 1, 3, 2, 2 });
    }

만약 params 뒤에 object[] 를 보내게 된다면, 데이터형까지도 자유로워진다!

 

 

 

사실 우리는 이미 params를 자주 접하고 있다.

string.Format("{0:N0} - {1:N0}", a, b);

string.Format에서 사용되는 뒤쪽 인자가 params로 선언되어있다.

맨 앞은 string이기 때문에 몇 개의 인자를 받을지 알 수 없기 때문.

 

 

 

제한사항

 - params는 반드시 마지막 매개변수여야 한다.

 - params는 메서드에 반드시 한 개만 존재한다.

 - params 매개 변수의 형식은 1차원 배열이여야 한다.

 

 

 

 

 

댓글

Designed by JB FACTORY