LeeTaes 공부노트

[C#] 가변 파라미터, 선택적 인수, 명명된 인수 본문

Game Programming/C#

[C#] 가변 파라미터, 선택적 인수, 명명된 인수

리태s 2024. 6. 25. 15:49
728x90
반응형

가변 파라미터

가변 파라미터(Variadic Parameters)란 메서드에 전달되는 인수의 개수가 가변적일 수 있도록 허용하는 기능입니다.

C#에서는 params 키워드를 사용하여 가변 파라미터를 선언할 수 있으며, 가변 파라미터는 배열 형태로 메서드에 전달됩니다.

 

즉, params 키워드를 사용하면 개수의 제한 없이 매개변수를 넘길 수 있다는 의미입니다.

 

params 키워드를 사용하기 위해 몇가지 제한이 존재합니다.

  • params 키워드는 메서드의 마지막 파라미터에만 사용할 수 있습니다.
  • params 키워드는 단 하나의 파라미터에만 적용될 수 있습니다.
  • params 파라미터는 배열 타입이어야 합니다.
internal class Program
{
    static void Main(string[] args)
    {
        PrintString(1, "G1", "G123", "G345");
        PrintString(2, "G2", "G22", "G222", "G2222");
    }

    static void PrintString(int k, params string[] args)
    {
        Console.WriteLine(k);

        foreach (string arg in args) 
        {
            Console.WriteLine(arg);
        }
    }
}

출력결과

 

위와 같이 가변 파라미터를 사용해 메서드 호출 시 전달되는 인수의 개수를 유연하게 조정할 수 있으며, 코드의 가독성과 사용성을 높일 수 있습니다.

선택적 인수

선택적 인수는 메서드에 인수를 전달하지 않아도 기본값을 사용하도록 하는 기능입니다.

기본값을 할당한 인자 뒤에는 필수로 기본값할당해줘야 사용 가능합니다. 

  • void PrintInt(int a = 10, int b) { } - (X)
  • void PrintInt(int a = 10, int b = 5) { } - (O)
internal class Program
{
    static void Main(string[] args)
    {
        PrintInt(1, 2);
        PrintInt(1);
    }

    static void PrintInt(int a, int b = 10)
    {
        Console.WriteLine(a);
        Console.WriteLine(b);
    }
}

실행 결과

명명된 인수

명명된 인수는 메서드 호출 시 인수의 이름명시적으로 지정하여 전달하는 기능입니다.

인수의 이름을 명시적으로 지정하며 인수의 순서와 상관없이 메서드를 호출할 수 있으며, 가독성이 높아진다는 장점을

가지고 있습니다.

 

internal class Program
{
    static void Main(string[] args)
    {
        PrintInt(b: 1, a: 2);
        PrintInt(a: 1, b: 10);
    }

    static void PrintInt(int a, int b)
    {
        Console.WriteLine(a);
        Console.WriteLine(b);
    }
}

 

선택적 인수와 명명된 인수는 함께 사용할 수 있으며, 이를 통해 더욱 유연한 메서드 호출이 가능합니다.

728x90
반응형

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

[C#] 얕은 복사 vs 깊은 복사 (Shallow Copy vs Deep Copy)  (0) 2024.06.29
[C#] 의존성 주입(DI, Dependency Injection)  (0) 2024.06.29
[C#] as, is  (0) 2024.06.25
[C#] Delegate  (0) 2024.06.25
[C#] Null 조건 연산자  (0) 2024.06.25