Menu
Coddy logo textTech

Arguments nommés

Fait partie de la section Programmation Orientée Objet du Journey C# de Coddy — leçon 49 sur 70.

Les arguments nommés vous permettent de spécifier quel paramètre reçoit une valeur en utilisant son nom, plutôt que de vous fier à sa position. Cela rend les appels de méthode plus clairs et vous permet de passer des arguments dans n'importe quel ordre.

Utilisez le nom du paramètre suivi de deux-points avant la valeur :

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

// Utilisation d'arguments nommés
CreateUser(name: "Alice", age: 25, isActive: true);
CreateUser(age: 30, isActive: false, name: "Bob");  // N'importe quel ordre fonctionne

Les arguments nommés brillent lorsqu'ils sont combinés avec des paramètres optionnels. Au lieu de fournir toutes les valeurs optionnelles précédentes, vous pouvez passer directement à celle dont vous avez besoin :

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

// Ignorer port et useSSL, spécifier uniquement timeout
Configure("localhost", timeout: 60);
Configure("server.com", useSSL: true);

Vous pouvez mélanger des arguments positionnels et nommés, mais les arguments positionnels doivent figurer en premier. Les arguments nommés améliorent la lisibilité, en particulier pour les méthodes comportant plusieurs paramètres du même type ou des indicateurs (flags) booléens dont la signification n'est pas évidente à partir de la seule valeur.

challenge icon

Défi

Facile

Construisons un générateur de rapports qui tire parti des arguments nommés pour rendre les appels de méthode parfaitement clairs. Lorsque les méthodes ont plusieurs paramètres - en particulier ceux du même type ou des drapeaux booléens - les arguments nommés rendent votre code auto-documenté.

Vous organiserez votre code sur deux fichiers :

  • ReportGenerator.cs : Créez une classe ReportGenerator dans l'espace de noms Reports avec une méthode possédant plusieurs paramètres optionnels :
    • GenerateReport(string title, string author = "Anonymous", bool includeHeader = true, bool includeSummary = false, int maxPages = 10)
    • Cette méthode doit retourner une chaîne formatée décrivant la configuration du rapport
    • Format : Report: {title} by {author} | Header: {Yes/No}, Summary: {Yes/No}, Max Pages: {maxPages}
  • Program.cs : Dans votre fichier principal, démontrez la puissance des arguments nommés en appelant GenerateReport de différentes manières - en sautant les paramètres optionnels dont vous n'avez pas besoin et en spécifiant uniquement ceux qui comptent pour chaque rapport.

Vous recevrez trois entrées :

  • Titre du premier rapport
  • Titre du deuxième rapport
  • Titre du troisième rapport

Générez trois rapports avec des configurations différentes :

  1. Premier rapport : Utilisez uniquement le titre (tous les paramètres par défaut s'appliquent)
  2. Deuxième rapport : Utilisez le titre avec includeSummary: true et maxPages: 25 (sautez author et includeHeader, en conservant leurs valeurs par défaut)
  3. Troisième rapport : Utilisez le titre avec author: "Admin", includeHeader: false, et includeSummary: true (conservez la valeur par défaut de maxPages)

Affichez le résultat de chaque rapport sur sa propre ligne.

Par exemple, si les entrées sont Sales Q1, Annual Review, et Inventory Check, la sortie devrait être :

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

Remarquez comment les arguments nommés vous permettent d'accéder directement aux paramètres qui vous intéressent - vous n'avez pas besoin de spécifier author ou includeHeader juste pour modifier includeSummary. Cela rend vos appels de méthode beaucoup plus lisibles et révélateurs d'intention !

Aide-mémoire

Les arguments nommés vous permettent de spécifier quel paramètre reçoit une valeur en utilisant son nom, plutôt que de se fier à sa position. Cela rend les appels de méthode plus clairs et vous permet de passer des arguments dans n'importe quel ordre.

Utilisez le nom du paramètre suivi d'un deux-points avant la valeur :

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

// Utilisation d'arguments nommés
CreateUser(name: "Alice", age: 25, isActive: true);
CreateUser(age: 30, isActive: false, name: "Bob");  // N'importe quel ordre fonctionne

Les arguments nommés fonctionnent bien avec les paramètres optionnels. Vous pouvez passer directement au paramètre dont vous avez besoin sans fournir toutes les valeurs optionnelles précédentes :

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

// Ignorer port et useSSL, spécifier uniquement timeout
Configure("localhost", timeout: 60);
Configure("server.com", useSSL: true);

Vous pouvez mélanger des arguments positionnels et nommés, mais les arguments positionnels doivent venir en premier. Les arguments nommés améliorent la lisibilité, en particulier pour les méthodes ayant plusieurs paramètres du même type ou des indicateurs (flags) booléens.

Essayez vous-même

using System;
using Reports;

class Program
{
    public static void Main(string[] args)
    {
        // Lire les trois titres de rapport
        string title1 = Console.ReadLine();
        string title2 = Console.ReadLine();
        string title3 = Console.ReadLine();

        // Créer une instance de ReportGenerator
        ReportGenerator generator = new ReportGenerator();

        // TODO: Générer le premier rapport - utiliser uniquement le titre (tous les paramètres par défaut s'appliquent)
        

        // TODO: Générer le deuxième rapport - utiliser le titre avec includeSummary: true et maxPages: 25
        // (ignorer author et includeHeader, en conservant leurs valeurs par défaut)
        

        // TODO: Générer le troisième rapport - utiliser le titre avec author: "Admin", includeHeader: false, et includeSummary: true
        // (conserver la valeur par défaut de maxPages)
        

        // Afficher le résultat de chaque rapport
    }
}
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Programmation Orientée Objet