Notice
Recent Posts
Recent Comments
Link
관리 메뉴

nomad-programmer

[Programming/C#] 가변 길이 매개 변수 본문

Programming/C#

[Programming/C#] 가변 길이 매개 변수

scii 2020. 9. 7. 18:06

코딩을 하다 보면 똑같은 그저 매개 변수의 "수"가 다르다는 이유만으로 똑같은 메소드를 여러 가지 버전으로 오버로딩하고 싶을 때가 있다. 이런 경우를 위해 C#은 "가변 길이 매개 변수"라는 기능을 제공한다.

가변 길이 매개 변수란, 그 개수가 유연하게 변할 수 있는 매개 변수를 말한다. 이것을 이용하면 다음과 같이 입력되는 모든 매개 변수의 합을 구하는 Sum() 메소드를 오버로딩하지 않고도 구현할 수 있다.

int total = 0;

total = Sum(1, 2);
total = Sum(1, 2, 3);
total = Sum(1, 2, 3, 4, 5, ...);

가변 길이 매개 변수는 params 키워드와 배열을 이용해서 선언한다. 

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

가변 길이 매개 변수는 형식은 같으나 매개 변수의 개수만 유연하게 달라질 수 있는 경우에 적합하다.

using System;

namespace CSharpExam
{
    class ParamsExample
    {
        static int Sum(params int[] args)
        {
            Console.WriteLine("summing...");

            int sum = 0;

            for (int i = 0; i < args.Length; i++)
            {
                if (i > 0)
                {
                    Console.Write(',');
                }
                Console.Write(args[i]);

                sum += args[i];
            }
            Console.WriteLine();
            return sum;
        }

        static int Main(string[] args)
        {
            int sum = Sum(3, 4, 5, 6, 7, 8, 9, 10);

            Console.WriteLine($"sum: {sum}");

            return 0;
        }
    }
}

/* 결과

summing...
3,4,5,6,7,8,9,10
sum: 52

*/

'Programming > C#' 카테고리의 다른 글

[Programming/C#] 선택적 매개 변수  (0) 2020.09.07
[Programming/C#] 네임드 매개 변수  (0) 2020.09.07
[Programming/C#] 출력 전용 매개 변수  (0) 2020.09.07
[Programming/C#] 참조자  (0) 2020.09.07
[Programming/C#] goto 문  (0) 2020.09.07
Comments