[c#] C# 가변 길이 매개변수와 오버로딩

C#에서는 가변 길이 매개변수와 메서드 오버로딩을 사용하여 유연한 방식으로 메서드를 정의할 수 있습니다. 이를 통해 동일한 이름의 메서드를 여러 가지 방식으로 호출하고 다양한 매개변수에 대해 처리할 수 있습니다.

가변 길이 매개변수

가변 길이 매개변수는 메서드의 매개변수 수를 동적으로 지정할 수 있는 기능입니다. 이를 통해 메서드를 호출할 때 필요한 매개변수 수를 유연하게 다룰 수 있습니다.

가변 길이 매개변수는 params 키워드를 사용하여 정의하며, 배열 형태로 매개변수를 받습니다. 다음은 가변 길이 매개변수를 사용한 메서드의 예시입니다.

public void PrintNumbers(params int[] numbers)
{
    foreach (int num in numbers)
    {
        Console.WriteLine(num);
    }
}

// 호출 예시
PrintNumbers(1, 2, 3);
PrintNumbers(4, 5, 6, 7);

위 예시에서 PrintNumbers 메서드는 가변 길이 매개변수를 사용하여 여러 개의 숫자를 받아들일 수 있습니다.

메서드 오버로딩

메서드 오버로딩은 동일한 이름의 메서드를 여러 개 정의하는 것을 말합니다. 메서드 이름이 같더라도 매개변수의 타입, 개수, 순서가 다르면 서로 다른 메서드로 취급됩니다.

다음은 메서드 오버로딩 예시입니다.

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

public double Add(double a, double b)
{
    return a + b;
}

위 예시에서 Add 메서드는 정수형 매개변수를 받는 버전과 실수형 매개변수를 받는 버전 두 가지가 오버로딩되어 있습니다.

가변 길이 매개변수와 메서드 오버로딩의 혼용

가변 길이 매개변수와 메서드 오버로딩은 함께 사용될 수 있습니다. 가변 길이 매개변수를 사용하는 메서드도 오버로딩하여 여러 가지 버전을 제공할 수 있습니다.

public void PrintValues(params string[] values)
{
    foreach (string val in values)
    {
        Console.WriteLine(val);
    }
}

public void PrintValues(string prefix, params string[] values)
{
    foreach (string val in values)
    {
        Console.WriteLine(prefix + " " + val);
    }
}

위 예시에서 첫 번째 PrintValues 메서드는 가변 길이 매개변수를 사용하여 값을 출력하고, 두 번째 PrintValues 메서드는 가변 길이 매개변수와 추가적인 문자열을 받아들여 출력합니다.

가변 길이 매개변수와 메서드 오버로딩을 혼용하여 유연하고 다양한 상황에 대응할 수 있는 메서드를 정의할 수 있습니다.

이러한 기능들을 유용하게 사용하기 위해서는 적절한 상황과 요구사항을 고려하여 사용할 수 있도록 고려하고 활용해야 합니다.

결론

C#의 가변 길이 매개변수와 메서드 오버로딩은 메서드의 유연한 정의와 다양한 상황에 대응하기 위한 강력한 기능입니다. 적절하게 사용하여 코드를 보다 유연하고 읽기 쉽게 작성할 수 있습니다.

참고 문헌: