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 à la position. Cela rend les appels de méthode plus clairs et vous permet de transmettre les 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 sont particulièrement utiles lorsqu’ils sont associés à des paramètres facultatifs. Au lieu de fournir toutes les valeurs facultatives précédentes, vous pouvez accéder 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}");
}

// Ignorez port et useSSL, spécifiez 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 comportant plusieurs paramètres du même type ou des indicateurs booléens dont la signification n’est pas évidente à partir de la valeur seule.

challenge icon

Défi

Facile

Construisons un générateur de rapports qui tire parti des arguments nommés afin de rendre les appels de méthode parfaitement clairs. Lorsque les méthodes possèdent plusieurs paramètres — en particulier lorsqu’ils sont du même type ou qu’il s’agit d’indicateurs booléens — les arguments nommés rendent votre code explicite par lui-même.

Vous organiserez votre code sur deux fichiers :

  • ReportGenerator.cs : créez une classe ReportGenerator dans l’espace de noms Reports, avec une méthode qui possède plusieurs paramètres facultatifs :
    • GenerateReport(string title, string author = "Anonymous", bool includeHeader = true, bool includeSummary = false, int maxPages = 10)
    • Cette méthode doit renvoyer 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 ignorant les paramètres facultatifs dont vous n’avez pas besoin et en spécifiant uniquement ceux qui sont importants 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 (toutes les valeurs par défaut s’appliquent)
  2. Deuxième rapport : utilisez le titre avec includeSummary: true et maxPages: 25 (ignorez 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 doit ê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 simplement pour modifier includeSummary. Cela rend vos appels de méthode beaucoup plus lisibles et explicites quant à leur intention !

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

Entraînez-vous par vous-même : Compilateur C# en ligne