params
Collections
추천 자료: ASP.NET Core 인증 및 권한 부여
C# 13에서는 params
키워드를 사용하여 가변 길이 인수를 받을 때, 배열뿐만 아니라 컬렉션(Collection) 타입도 지원하도록 개선되었습니다. 이를 통해 더 유연하고 직관적인 코드를 작성할 수 있습니다.
1. 기존 params
배열 방식 (C# 12 이하)
기존에는 params
를 사용할 때 배열만 허용되었습니다.
void PrintNumbers(params int[] numbers)
{
foreach (var number in numbers)
{
Console.WriteLine(number);
}
}
PrintNumbers(1, 2, 3, 4, 5);
하지만, 배열을 사용하는 방식은 리스트(List)나 다른 컬렉션을 직접 전달하기 어려웠습니다.
2. C# 13의 params
Collections 기능
C# 13부터는 배열뿐만 아니라 List<T>
와 같은 컬렉션 타입도 지원됩니다.
void PrintNumbers(params List<int> numbers)
{
foreach (var number in numbers)
{
Console.WriteLine(number);
}
}
PrintNumbers(1, 2, 3, 4, 5);
이제 params
키워드를 사용할 때 List<T>
와 같은 컬렉션을 직접 사용할 수 있어 더 유연한 코드를 작성할 수 있습니다.
3. params
컬렉션과 기존 리스트 혼용
기존의 리스트를 params
메서드에 전달할 수도 있습니다.
void PrintNumbers(params List<int> numbers)
{
foreach (var number in numbers)
{
Console.WriteLine(number);
}
}
var numberList = new List<int> { 10, 20, 30 };
PrintNumbers(numberList);
이제 별도의 ToArray()
변환 없이 리스트를 직접 전달할 수 있습니다.
4. params
와 Span<T>
혼합 사용
C# 13에서는 params
와 Span<T>
를 조합하여 더 효율적인 메모리 관리가 가능합니다.
void PrintNumbers(params Span<int> numbers)
{
foreach (var number in numbers)
{
Console.WriteLine(number);
}
}
var numbers = new[] { 100, 200, 300 };
PrintNumbers(numbers);
이 방식은 배열 복사를 방지하고 성능을 개선하는 데 도움이 됩니다.
5. 마무리
- C# 13부터
params
는List<T>
등 컬렉션 타입도 지원합니다. - 배열을 강제하지 않으므로 더 직관적이고 유연한 코드를 작성할 수 있습니다.
Span<T>
와 조합하면 메모리 성능 최적화도 가능합니다.
추천 자료: .NET Blazor에 대해 알아보시겠어요? .NET Blazor 알아보기를 확인해보세요!