Menu
Coddy logo textTech

명명된 인수

Coddy C# 여정의 객체 지향 프로그래밍 섹션에 포함된 레슨. 70개 중 49번째.

이름이 지정된 인수를 사용하면 위치에 의존하지 않고 매개변수의 이름을 사용하여 어떤 매개변수가 값을 받을지 지정할 수 있습니다. 이렇게 하면 메서드 호출이 더 명확해지고 인수를 어떤 순서로든 전달할 수 있습니다.

값 앞에 매개변수 이름을 콜론과 함께 사용하세요:

public static void CreateUser(string name, int age, bool isActive)
{
    Console.WriteLine($"{name}, Age: {age}, Active: {isActive}");
}

// 명명된 인수 사용
CreateUser(name: "Alice", age: 25, isActive: true);
CreateUser(age: 30, isActive: false, name: "Bob");  // 어떤 순서로든 작동합니다

명명된 인수는 선택적 매개 변수와 함께 사용할 때 특히 유용합니다. 앞에 있는 모든 선택적 값을 제공하는 대신, 필요한 값으로 바로 건너뛸 수 있습니다:

public static void Configure(string host, int port = 8080, bool useSSL = false, int timeout = 30)
{
    Console.WriteLine($"{host}:{port}, SSL: {useSSL}, Timeout: {timeout}");
}

// port와 useSSL을 건너뛰고 timeout만 지정
Configure("localhost", timeout: 60);
Configure("server.com", useSSL: true);

위치 인수와 명명된 인수를 함께 사용할 수 있지만, 위치 인수가 먼저 와야 합니다. 명명된 인수는 특히 동일한 유형의 매개변수가 여러 개 있거나 값만으로는 의미가 분명하지 않은 불리언 플래그가 있는 method에서 가독성을 향상합니다.

challenge icon

챌린지

쉬움

명명된 인수를 활용하여 메서드 호출을 매우 명확하게 만드는 보고서 생성기를 만들어 보겠습니다. 메서드에 여러 매개변수가 있을 때, 특히 같은 형식의 매개변수나 부울 플래그가 여러 개 있을 때 명명된 인수를 사용하면 코드 자체가 문서 역할을 합니다.

코드를 두 파일에 걸쳐 구성합니다.

  • ReportGenerator.cs: Reports 네임스페이스에 여러 선택적 매개변수를 가진 메서드가 포함된 ReportGenerator 클래스를 만듭니다.
    • GenerateReport(string title, string author = "Anonymous", bool includeHeader = true, bool includeSummary = false, int maxPages = 10)
    • 이 메서드는 보고서 구성을 설명하는 형식이 지정된 문자열을 반환해야 합니다.
    • 형식: Report: {title} by {author} | Header: {Yes/No}, Summary: {Yes/No}, Max Pages: {maxPages}
  • Program.cs: 기본 파일에서 GenerateReport를 다양한 방식으로 호출하여 명명된 인수의 강력한 기능을 보여 줍니다. 필요하지 않은 선택적 매개변수는 건너뛰고 각 보고서에 중요한 매개변수만 지정합니다.

세 개의 입력을 받습니다.

  • 첫 번째 보고서 제목
  • 두 번째 보고서 제목
  • 세 번째 보고서 제목

서로 다른 구성으로 세 개의 보고서를 생성합니다.

  1. 첫 번째 보고서: 제목만 사용합니다 (all 기본값 적용).
  2. 두 번째 보고서: 제목과 includeSummary: truemaxPages: 25를 사용합니다 (author와 includeHeader는 건너뛰고 기본값을 유지).
  3. 세 번째 보고서: 제목과 author: "Admin", includeHeader: false, includeSummary: true를 사용합니다 (maxPages 기본값 유지).

각 보고서 결과를 한 줄에 하나씩 출력합니다.

예를 들어 입력이 Sales Q1, Annual Review, Inventory Check라면 출력은 다음과 같아야 합니다.

Report: Sales Q1 by Anonymous | Header: Yes, Summary: No, Max Pages: 10
Report: Annual Review by Anonymous | Header: Yes, Summary: Yes, Max Pages: 25
Report: Inventory Check by Admin | Header: No, Summary: Yes, Max Pages: 10

명명된 인수를 사용하면 원하는 매개변수로 바로 건너뛸 수 있다는 점에 주목하세요. includeSummary만 변경하기 위해 authorincludeHeader를 지정할 필요가 없습니다. 따라서 메서드 호출이 훨씬 더 읽기 쉽고 의도가 잘 드러납니다!

직접 해보기

using System;
using Reports;

class Program
{
    public static void Main(string[] args)
    {
        // 세 개의 보고서 제목을 읽습니다
        string title1 = Console.ReadLine();
        string title2 = Console.ReadLine();
        string title3 = Console.ReadLine();

        // ReportGenerator 인스턴스를 생성합니다
        ReportGenerator generator = new ReportGenerator();

        // TODO: 첫 번째 보고서 생성 - 제목만 사용 (모든 기본값 적용)
        

        // TODO: 두 번째 보고서 생성 - includeSummary: true 및 maxPages: 25와 함께 제목 사용
        // (author와 includeHeader는 건너뛰고 기본값 유지)
        

        // TODO: 세 번째 보고서 생성 - author: "Admin", includeHeader: false, includeSummary: true와 함께 제목 사용
        // (maxPages 기본값 유지)
        

        // 각 보고서 결과를 출력합니다
    }
}
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

객체 지향 프로그래밍의 모든 레슨

직접 연습해 보세요: 온라인 C# 컴파일러