인수의 개수가 다르다고 오버로딩을 해야하나?

이런 경우를 위해 C#은 “가변 개수의 인수”라는 기능을 제공합니다.

가변 개수의 인수란, 그 개수가 유연하게 변할 수 있는 인수를 말 합니다.

이것을 이용하면 다음과 같이 입력되는 모든 인수의 합을 구하는 Sum() 메소드를 오버로딩 하지 않고도 구현할 수 있습니다.

int total = 0;
total = Sum(1, 2);
total = Sum(1, 2, 3);
total = Sum(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
// ...

가변 개수의 인수는 params 키워드와 배열을 이용해서 선언합니다.

int Sum( params int[] args)
{
			int sum = 0;

			for( int i = 0; i < args.Length; i ++ )
			{
						sum += args[i];
			}

			return sum;
}

그럼 메소드 오버로딩은 필요 없나?

아닙니다. 메소드 오버로딩은 매개변수의 개수뿐 아니라 형식이 다른 경우에 사용할 수 있습니다.

또한 매개변수의 개수가 유한하게 정해져 있다면 가변 개수의 인수보다는 메소드 오버로딩을 사용하는 것이 적절합니다.