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#의 가변 길이 매개변수와 메서드 오버로딩은 메서드의 유연한 정의와 다양한 상황에 대응하기 위한 강력한 기능입니다. 적절하게 사용하여 코드를 보다 유연하고 읽기 쉽게 작성할 수 있습니다.
참고 문헌:
- https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/using-indexers
- https://www.tutorialsteacher.com/csharp/csharp-indexer
- https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/builtin-types/automatic-properties