Menu
Coddy logo textTech

Argumenty nazwane

Część sekcji Programowanie obiektowe ścieżki C# w Coddy. Lekcja 49 z 70.

Argumenty nazwane pozwalają określić, który parametr otrzymuje wartość, przez użycie jego nazwy zamiast polegania na kolejności. Dzięki temu wywołania metod są czytelniejsze i możesz przekazywać argumenty w dowolnej kolejności.

Użyj nazwy parametru, a przed wartością umieść dwukropek:

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

// Używanie argumentów nazwanych
CreateUser(name: "Alice", age: 25, isActive: true);
CreateUser(age: 30, isActive: false, name: "Bob");  // Dowolna kolejność jest poprawna

Argumenty nazwane są szczególnie przydatne w połączeniu z parametrami opcjonalnymi. Zamiast podawać wszystkie poprzedzające wartości opcjonalne, możesz od razu przejść do tej, której potrzebujesz:

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

// Pomiń port i useSSL, podaj tylko timeout
Configure("localhost", timeout: 60);
Configure("server.com", useSSL: true);

Możesz mieszać argumenty pozycyjne i nazwane, ale argumenty pozycyjne muszą być podane jako pierwsze. Argumenty nazwane poprawiają czytelność, szczególnie w przypadku metod z wieloma parametrami tego samego typu lub flagami logicznymi, których znaczenie nie wynika jednoznacznie z samej wartości.

challenge icon

Wyzwanie

Łatwy

Zbudujmy generator raportów, który wykorzystuje argumenty nazwane, aby wywołania metod były krystalicznie jasne. Gdy metody mają wiele parametrów — zwłaszcza tego samego typu lub będących flagami logicznymi — argumenty nazwane sprawiają, że kod sam się dokumentuje.

Rozmieścisz kod w dwóch plikach:

  • ReportGenerator.cs: Utwórz klasę ReportGenerator w przestrzeni nazw Reports z metodą mającą kilka opcjonalnych parametrów:
    • GenerateReport(string title, string author = "Anonymous", bool includeHeader = true, bool includeSummary = false, int maxPages = 10)
    • Ta metoda powinna zwracać sformatowany ciąg znaków opisujący konfigurację raportu
    • Format: Report: {title} by {author} | Header: {Yes/No}, Summary: {Yes/No}, Max Pages: {maxPages}
  • Program.cs: W głównym pliku pokaż możliwości argumentów nazwanych, wywołując GenerateReport na różne sposoby — pomijaj niepotrzebne parametry opcjonalne i określaj tylko te, które są istotne dla danego raportu.

Otrzymasz trzy dane wejściowe:

  • Tytuł pierwszego raportu
  • Tytuł drugiego raportu
  • Tytuł trzeciego raportu

Wygeneruj trzy raporty o różnych konfiguracjach:

  1. Pierwszy raport: Użyj tylko tytułu (zastosuj wszystkie wartości domyślne)
  2. Drugi raport: Użyj tytułu z includeSummary: true i maxPages: 25 (pomiń autora i includeHeader, pozostawiając ich wartości domyślne)
  3. Trzeci raport: Użyj tytułu z author: "Admin", includeHeader: false i includeSummary: true (pozostaw domyślną wartość maxPages)

Wypisz wynik każdego raportu w osobnym wierszu.

Na przykład, jeśli danymi wejściowymi są Sales Q1, Annual Review i Inventory Check, wynik powinien wyglądać tak:

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

Zwróć uwagę, że argumenty nazwane pozwalają od razu przejść do parametrów, które Cię interesują — nie musisz określać author ani includeHeader, żeby zmienić includeSummary. Dzięki temu wywołania metod są znacznie czytelniejsze i lepiej oddają intencje!

Spróbuj swoich sił

using System;
using Reports;

class Program
{
    public static void Main(string[] args)
    {
        // Wczytaj tytuły trzech raportów
        string title1 = Console.ReadLine();
        string title2 = Console.ReadLine();
        string title3 = Console.ReadLine();

        // Utwórz instancję ReportGenerator
        ReportGenerator generator = new ReportGenerator();

        // TODO: Wygeneruj pierwszy raport – użyj tylko tytułu (zastosuj wszystkie wartości domyślne)
        

        // TODO: Wygeneruj drugi raport – użyj tytułu oraz includeSummary: true i maxPages: 25
        // (pomiń author i includeHeader, zachowując ich wartości domyślne)
        

        // TODO: Wygeneruj trzeci raport – użyj tytułu oraz author: "Admin", includeHeader: false i includeSummary: true
        // (zachowaj domyślną wartość maxPages)
        

        // Wypisz wynik każdego raportu
    }
}
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Programowanie obiektowe

Poćwicz samodzielnie: Kompilator C# online