Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C# 명명된 매개변수(Named Parameters) 완벽 가이드: 개념부터 활용 예제까지

C#의 명명된 매개변수(Named Parameters)는 메서드를 호출할 때 매개변수의 순서를 외우거나 일일이 확인해야 하는 번거로움을 덜어주는 기능입니다. 호출하는 쪽에서 각 인수(argument)가 어떤 매개변수에 해당하는지 매개변수 이름으로 직접 지정할 수 있습니다.

NamedParameterFunction(firstName: "Hello", lastName: "World")

명명된 매개변수의 핵심 특징

명명된 매개변수를 사용하면 이름만 정확히 일치한다면 어떤 순서로든 인수를 전달할 수 있습니다. 컴파일러는 인수의 이름을 기준으로 올바른 변수에 값을 자동으로 매핑해 주기 때문입니다. 단, 인수 이름은 반드시 메서드 정의에 선언된 매개변수 이름과 일치해야 합니다.

또한 명명된 인수는 각 값이 어떤 의미를 가지는지 코드상에서 명확하게 드러내기 때문에 코드의 가독성을 크게 향상시킵니다. 특히 매개변수가 많은 메서드나 선택적 매개변수(optional parameters)와 함께 사용할 때 그 진가를 발휘합니다.

예제 코드

using System;
namespace DemoApplication{
    class Demo{
        static void Main(string[] args){
            NamedParameterFunction("James", "Bond");
            NamedParameterFunction(firstName:"Mark", lastName:"Wood");
            NamedParameterFunction(lastName: "Federer", firstName: "Roger");
            Console.ReadLine();
        }
        public static void NamedParameterFunction(string firstName, string lastName){
            Console.WriteLine($"FullName: {firstName} {lastName}");
        }
    }
}

실행 결과

위 코드를 실행하면 다음과 같은 출력 결과를 얻을 수 있습니다.

FullName: James Bond
FullName: Mark Wood
FullName: Roger Federer

코드 분석

위 예제에서 세 가지 호출 방식을 살펴볼 수 있습니다.

  • 일반적인 위치 기반 호출: NamedParameterFunction("James", "Bond")처럼 이름 없이 순서대로 전달하는 전통적인 방식입니다.
  • 순서를 유지한 명명된 호출: NamedParameterFunction(firstName:"Mark", lastName:"Wood")처럼 원래 순서대로 이름을 붙여 전달한 경우입니다.
  • 순서를 바꾼 명명된 호출: NamedParameterFunction(lastName: "Federer", firstName: "Roger")처럼 매개변수 순서를 뒤바꿔 전달한 경우입니다.

주목할 점은 마지막 호출입니다. 매개변수가 선언된 순서와 다르게 전달되었음에도 불구하고, 명명된 매개변수를 사용했기 때문에 각 값이 이름을 기준으로 올바른 변수에 매핑됩니다. 그 결과 예상대로 "Roger Federer"라는 출력이 정상적으로 나타납니다.

정리

명명된 매개변수는 C# 4.0부터 도입된 기능으로, 다음과 같은 상황에서 특히 유용합니다.

  • 매개변수가 많은 메서드를 호출할 때 실수를 방지하고 싶은 경우
  • 선택적 매개변수 중 필요한 것만 골라서 값을 지정하고 싶은 경우
  • 호출 코드만 보고도 각 인수의 의미를 파악할 수 있도록 가독성을 높이고 싶은 경우

단, 인수 이름은 메서드 시그니처의 매개변수 이름과 반드시 일치해야 하므로, 메서드의 매개변수 이름을 변경하면 호출부 코드도 함께 수정해야 한다는 점을 유의해야 합니다.