Menu
Coddy logo textTech

Paramètres optionnels

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

Les paramètres optionnels vous permettent de définir des valeurs par défaut pour les paramètres de méthode. Lorsqu'un appelant ne fournit pas de valeur pour ce paramètre, la valeur par défaut est utilisée automatiquement.

Vous créez un paramètre optionnel en lui attribuant une valeur par défaut dans la signature de la méthode :

public static void Greet(string name, string greeting = "Hello")
{
    Console.WriteLine(greeting + ", " + name + "!");
}

// Les deux appels fonctionnent
Greet("Alice");              // Hello, Alice!
Greet("Bob", "Welcome");     // Welcome, Bob!

Les paramètres optionnels doivent être placés après tous les paramètres obligatoires. Vous pouvez avoir plusieurs paramètres optionnels, et les appelants peuvent en omettre à partir de la droite :

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

CreateUser("Emma");                    // Emma, Age: 0, Active: True
CreateUser("James", 25);               // James, Age: 25, Active: True
CreateUser("Sarah", 30, false);        // Sarah, Age: 30, Active: False

Les valeurs par défaut doivent être des constantes de temps de compilation — des littéraux, des valeurs const ou des expressions default. Vous ne pouvez pas utiliser de variables ou d'appels de méthode comme valeurs par défaut. Cela rend les paramètres optionnels idéaux pour les paramètres de configuration et les méthodes où la plupart des appelants utilisent des valeurs communes.

challenge icon

Défi

Facile

Construisons un système de notification qui utilise des paramètres optionnels pour offrir un formatage de message flexible. Vous allez créer une classe utilitaire capable d'envoyer des notifications avec des paramètres personnalisables, où la plupart des appelants utiliseront des valeurs par défaut judicieuses.

Vous organiserez votre code sur deux fichiers :

  • NotificationService.cs : Créez une classe NotificationService dans l'espace de noms Notifications avec une méthode qui illustre les paramètres optionnels :
    • SendNotification(string message, string priority = "Normal", bool addTimestamp = true) - Cette méthode doit retourner une chaîne de notification formatée. Lorsque addTimestamp est vrai, préfixez le message avec [TIMESTAMP]. Le format doit être : [Priority] Message ou [TIMESTAMP] [Priority] Message selon le réglage de l'horodatage.
  • Program.cs : Dans votre fichier principal, démontrez le fonctionnement des paramètres optionnels en appelant SendNotification de trois manières différentes - en utilisant toutes les valeurs par défaut, en remplaçant un paramètre, et en remplaçant les deux paramètres optionnels.

Vous recevrez trois entrées :

  • Premier message (utilisera toutes les valeurs par défaut)
  • Deuxième message (utilisera la priorité "Urgent" avec l'horodatage par défaut)
  • Troisième message (utilisera la priorité "Low" et aucun horodatage)

Appelez SendNotification trois fois et affichez chaque résultat :

  1. Premier appel : passez uniquement le premier message (utilise les valeurs par défaut : priorité "Normal", horodatage activé)
  2. Deuxième appel : passez le deuxième message avec la priorité "Urgent" (l'horodatage reste vrai par défaut)
  3. Troisième appel : passez le troisième message avec la priorité "Low" et false pour l'horodatage

Par exemple, si les entrées sont System started, Server overload, et Cache cleared, la sortie devrait être :

[TIMESTAMP] [Normal] System started
[TIMESTAMP] [Urgent] Server overload
[Low] Cache cleared

Remarquez comment la même méthode gère élégamment les trois scénarios - les appelants ne spécifient que ce qu'ils ont besoin de modifier par rapport aux valeurs par défaut !

Aide-mémoire

Les paramètres optionnels vous permettent de définir des valeurs par défaut pour les paramètres de méthode. Lorsqu'un appelant ne fournit pas de valeur, la valeur par défaut est utilisée automatiquement.

Créez un paramètre optionnel en attribuant une valeur par défaut dans la signature de la méthode :

public static void Greet(string name, string greeting = "Hello")
{
    Console.WriteLine(greeting + ", " + name + "!");
}

// Les deux appels fonctionnent
Greet("Alice");              // Hello, Alice!
Greet("Bob", "Welcome");     // Welcome, Bob!

Les paramètres optionnels doivent être placés après tous les paramètres obligatoires. Vous pouvez avoir plusieurs paramètres optionnels :

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

CreateUser("Emma");                    // Emma, Age: 0, Active: True
CreateUser("James", 25);               // James, Age: 25, Active: True
CreateUser("Sarah", 30, false);        // Sarah, Age: 30, Active: False

Les valeurs par défaut doivent être des constantes au moment de la compilation - des littéraux, des valeurs const ou des expressions default. Vous ne pouvez pas utiliser de variables ou d'appels de méthode comme valeurs par défaut.

Essayez vous-même

using System;
using Notifications;

class Program
{
    public static void Main(string[] args)
    {
        // Lire les trois messages
        string message1 = Console.ReadLine();
        string message2 = Console.ReadLine();
        string message3 = Console.ReadLine();

        // Créer une instance de NotificationService
        NotificationService service = new NotificationService();

        // TODO: Appeler SendNotification trois fois et afficher chaque résultat :
        // 1. Premier appel : passer uniquement message1 (utilise toutes les valeurs par défaut)
        // 2. Deuxième appel : passer message2 avec la priorité "Urgent" (timestamp est à true par défaut)
        // 3. Troisième appel : passer message3 avec la priorité "Low" et false pour timestamp

    }
}
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