본문 바로가기
프로그래밍/C#

C# 명명된 인자(Named Arguments)와 선택적 인자(Optical Arguments)

by bantomak 2023. 5. 25.

명명된 인자를 사용하면 인자를 매개 변수 목록 내의 해당 위치가 아닌 해당 이름과 일치시켜 인자를 지정하여 전달할 수 있다. 선택적 인자를 사용하면 일부 매개 변수에 대한 인자를 생략할 수 있다.

두 기법 모두 메서드, 인덱서, 생성자 및 대리자에 사용할 수 있다.

 

명명된 인자(Named Arguments)

명명된 인자를 사용하면 호출된 메서드의 매개 변수 목록에 있는 매개 변수 순서와 인자 순서를 일치시키지 않아도 된다.

PrintOrderDetails("Gift Shop", 31, "Red Mug");

매개 변수의 순서를 기억하지 못하지만 해당 이름을 알고 있는 경우 임의의 순서로 인자를 보낼 수 있다.

PrintOrderDetails(orderNum: 31, productName: "Red Mug", sellerName: "Gift Shop");
PrintOrderDetails(productName: "Red Mug", sellerName: "Gift Shop", orderNum: 31);

또한 명명된 인자는 각 인자가 무엇을 나타내는지를 식별하여 코드의 가독성을 향상시킨다.

 

선택적 인자(Optical Arguments)

메서드, 생성자, 인덱서, 또는 대리자의 정의에서 해당 매개 변수를 필수 또는 선택사항으로 지정할 수 있다.

호출 시 모든 필수 매개 변수에 대한 인자를 제공해야 하지만 선택적 매개 변수에 대한 인자는 생략할 수 있다.

 

각 선택적 매개 변수에는 해당 정의의 일부로 기본값이 있다. 해당 매개 변수에 대한 인자가 전달되지 않은 경우 이를 기본값으로 사용한다. 기본값은 다음 유형의 식 중 하나여야 한다.

 

  • 상수식
  • new ValType() 형태의 식
  • default(ValType) 형태의 식

선택적 매개 변수는 모든 필수 매개 변수 다음인 매개 변수 목록의 끝에서 정의된다. 호출자가 연속된 선택적 매개 변수 중 하나에 대한 인자를 제공하는 경우 이전의 모든 선택적 매개 변수에 대한 인자를 제공해야 한다.

 

public void ExampleMethod(int required, string optionalstr = "default string", int optionalint = 10)
//anExample.ExampleMethod(3, ,4); //2번째 인자가 전달되지 않아서 에러

anExample.ExampleMethod(3, optionalint: 4); //명명된 인자로 전달하면 문제가 없다.

 

예제 코드

 

'프로그래밍 > C#' 카테고리의 다른 글

읽기 / 쓰기 프로퍼티(Property) 선언 및 사용 방법  (54) 2023.05.31
C# nameof Expression  (22) 2023.05.26
C# 스레딩  (25) 2023.05.24
C# 컬렉션 - System.Collections.Hashtable  (10) 2023.05.23
C# 컬렉션 - System.Collections.ArrayList  (4) 2023.05.22

댓글