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

2024. 6. 25. 15:49·Game Programming/C#
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
'Game Programming/C#' 카테고리의 다른 글
  • [C#] 의존성 주입(DI, Dependency Injection)
  • [C#] as, is
  • [C#] Delegate
  • [C#] Null 조건 연산자
리태s
리태s
게임 클라이언트 프로그래머 직무를 준비하며 공부한 내용을 정리한 블로그입니다.
    반응형
    250x250
  • 리태s
    LeeTaes 공부노트
    리태s
  • 전체
    오늘
    어제
    • Home (165)
      • 프로젝트 (20)
        • Isaac 3D (5)
        • TimelessAdventure (13)
        • FruitsPuzzle (2)
      • Game Programming (25)
        • C# (8)
        • Unity Engine (6)
        • Unreal Engine (8)
        • UE_Multiplayer (3)
      • 코딩테스트 (111)
        • 프로그래머스 (Lv. 0) (27)
        • 프로그래머스 (Lv. 1) (31)
        • 프로그래머스 (Lv. 2) (21)
        • 백준 (Study) (29)
        • 알고리즘 (3)
      • CS지식 (7)
        • 운영체제 (7)
      • 일상 (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    후기
    tsoftobjectptr
    c#
    프로세스
    구현
    unity
    2022 kakao
    fsoftobjectpath
    pcce 기출문제
    Summer/Winter Coding
    Unreal Engine
    C++
    청년취업사관학교
    unrealengine
    delegate
    ai controller
    CS지식
    2019 kakao
    fruitspuzzle
    프로그래머스
    timelessadventure
    project t.a develop
    프로젝트
    2018 kakao
    코딩테스트
    sesac
    dataasset
    issac3d
    Algorithm
    백준
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
리태s
[C#] 가변 파라미터, 선택적 인수, 명명된 인수
상단으로

티스토리툴바