Exercice - Méthodes avec des paramètres facultatifs

Effectué

Le langage C Sharp permet l’utilisation de paramètres nommés et facultatifs. Ces types de paramètres vous permettent de sélectionner les arguments que vous souhaitez fournir à la méthode. Vous n’êtes donc pas limité à la structure définie dans la signature de méthode.

Les arguments nommés vous permettent de spécifier la valeur d’un paramètre à l’aide de son nom plutôt que de sa position. Les paramètres facultatifs vous permettent d’omettre ces arguments lors de l’appel de la méthode.

Dans cet exercice, vous allez apprendre à utiliser les paramètres nommés et facultatifs.

Créer une application RSVP

Dans cette tâche, vous allez créer une petite application pour permettre aux invités de répondre à une invitation à un événement. Les invités fourniront leur nombre de personnes et toutes leurs allergies. Vous allez également ajouter l’option permettant de restreindre les réponses à une liste d’invités sur invitation uniquement.

  1. Dans l’Éditeur Visual Studio Code, supprimez tout code existant des exercices précédents.

  2. Tapez le code suivant dans l’Éditeur Visual Studio Code :

    string[] guestList = {"Rebecca", "Nadia", "Noor", "Jonte"};
    string[] rsvps = new string[10];
    int count = 0;
    
    void RSVP(string name, int partySize, string allergies, bool inviteOnly) 
    {
        if (inviteOnly)
        {
            // search guestList before adding rsvp
        }
    
        rsvps[count] = $"Name: {name}, \tParty Size: {partySize}, \tAllergies: {allergies}";
        count++;
    }
    
    void ShowRSVPs()
    {
        Console.WriteLine("\nTotal RSVPs:");
        for (int i = 0; i < count; i++)
        {
            Console.WriteLine(rsvps[i]);
        }
    }
    

    Dans ce code, vous créez des variables pour stocker la liste d’invités et les rsvps. La méthode RSVP ajoute les informations des invités à la liste, tandis que la méthode ShowRSVPs affiche le nombre total de réponses RSVP à l’aide de la séquence d’échappement de tabulation pour séparer les informations des invités.

  3. Entrez le code suivant dans la RSVP méthode pour rechercher dans la liste d’invités :

    if (inviteOnly)
    {
        bool found = false;
        foreach (string guest in guestList)
        {
            if (guest.Equals(name)) {
                found = true;
                break;
            }
        }
        if (!found)
        {
            Console.WriteLine($"Sorry, {name} is not on the guest list");
            return;
        }
    }
    

    Dans ce code, vous vérifiez si le nom donné est égal à l’un des noms de la liste d’invités. Si une correspondance est trouvée, vous affectez à found la valeur true et quittez la foreach boucle. Si found la valeur est false, vous affichez un message et utilisez le return mot clé pour terminer la méthode.

  4. Appelez votre méthode en ajoutant le code suivant au-dessus de la signature de méthode RSVP :

    RSVP("Rebecca", 1, "none", true);
    RSVP("Nadia", 2, "Nuts", true);
    RSVP("Linh", 2, "none", false);
    RSVP("Tony", 1, "Jackfruit", true);
    RSVP("Noor", 4, "none", false);
    RSVP("Jonte", 2, "Stone fruit", false);
    ShowRSVPs();
    
  5. Enregistrez et exécutez le code pour observer la sortie suivante :

    Sorry, Tony is not on the guest list
    
    Total RSVPs:
    Name: Rebecca,  Party Size: 1,  Allergies: none
    Name: Nadia,    Party Size: 2,  Allergies: Nuts
    Name: Linh,     Party Size: 2,  Allergies: none
    Name: Noor,     Party Size: 4,  Allergies: none
    Name: Jonte,    Party Size: 2,  Allergies: Stone fruit
    

Utiliser des arguments nommés

Lors de l’appel d’une méthode qui accepte de nombreux paramètres, il peut être difficile de comprendre ce que représentent les arguments. L’utilisation d’arguments nommés peut améliorer la lisibilité de votre code. Utilisez un argument nommé en spécifiant le nom du paramètre suivi de la valeur de l’argument. Dans cette tâche, vous allez vous entraîner à utiliser des arguments nommés.

  1. Recherchez la ligne de code suivante : RSVP("Linh", 2, "none", false);

  2. Mettez à jour l’appel de méthode comme suit :

    RSVP(name: "Linh", partySize: 2, allergies: "none", inviteOnly: false);
    

    Notez que vous fournissez le nom du paramètre, suivi d’un signe deux-points et de la valeur. Cette syntaxe définit un argument nommé. Il n’est pas nécessaire de nommer tous les arguments. Par exemple, la syntaxe suivante est également valide :

    RSVP("Linh", 2, allergies: "none", inviteOnly: false); RSVP("Linh", partySize: 2, "none", false);

    Les arguments nommés, lorsqu’ils sont utilisés avec des arguments positionnels, sont valides s’ils sont utilisés dans la position correcte. Les arguments nommés sont également valides tant qu’ils ne sont pas suivis d’arguments positionnels. Par exemple, l’inclusion "Linh" et 2 à la fin n’est pas valide :

    RSVP(allergies: "none", inviteOnly: false, "Linh", 2);

    Si vous avez entré ce code, vous obtenez l’erreur suivante : Named argument 'allergies' is used out-of-position but is followed by an unnamed argument

  3. Recherchez la ligne de code suivante : RSVP("Tony", 1, "Jackfruit", true);

  4. Mettez à jour l’appel de méthode comme suit :

    RSVP("Tony", inviteOnly: true, allergies: "Jackfruit",  partySize: 1);
    

    Notez que les arguments nommés n’ont pas besoin d’apparaître dans l’ordre d’origine. Toutefois, l’argument Tony non nommé est un argument positionnel et doit apparaître dans la position correspondante.

  5. Enregistrez et exécutez le code pour observer la sortie suivante :

    Sorry, Tony is not on the guest list
    
    Total RSVPs:
    Name: Rebecca,  Party Size: 1,  Allergies: none
    Name: Nadia,    Party Size: 2,  Allergies: Nuts
    Name: Linh,     Party Size: 2,  Allergies: none
    Name: Noor,     Party Size: 4,  Allergies: none
    Name: Jonte,    Party Size: 2,  Allergies: Stone fruit
    

    Notez que l’utilisation d’arguments nommés ne modifie pas la sortie.

Déclarer des paramètres facultatifs

Un paramètre devient facultatif lorsqu’il reçoit une valeur par défaut. Si un paramètre facultatif est omis des arguments, la valeur par défaut est utilisée lorsque la méthode s’exécute. Dans cette étape, vous allez définir les paramètres partySizeallergies et inviteOnly facultatifs.

  1. Pour définir des paramètres facultatifs, mettez à jour la signature de méthode RSVP comme suit :

    void RSVP(string name, int partySize = 1, string allergies = "none", bool inviteOnly = true)
    

    Prenez un moment pour observer la syntaxe. Les paramètres sont toujours séparés par des virgules, mais les paramètres partySize, allergieset inviteOnly sont chacun attribués à une valeur.

    Ensuite, vous allez mettre à jour les appels sur RSVP pour appliquer les paramètres facultatifs.

  2. Mettez à jour votre code comme suit :

    RSVP("Rebecca");
    RSVP("Nadia", 2, "Nuts");
    RSVP(name: "Linh", partySize: 2, inviteOnly: false);
    RSVP("Tony", allergies: "Jackfruit", inviteOnly: true);
    RSVP("Noor", 4, inviteOnly: false);
    RSVP("Jonte", 2, "Stone fruit", false);
    

    Dans chaque appel de méthode, notez que le nom n’est jamais omis. Lorsqu’une méthode est appelée, tous les arguments requis doivent toujours être inclus. Toutefois, tous les arguments facultatifs peuvent être omis.

    Dans ce code, vous avez supprimé les arguments 1, "none", true du rsvp de Rebecca. Étant donné que ces arguments correspondent à la valeur par défaut, le résultat du rsvp de Rebecca est le même.

    Vous avez supprimé l’argument inviteOnly du rsvp de Nadia. Étant donné que la valeur inviteOnly par défaut est true, le résultat du rsvp de Nadia est le même.

    Vous avez supprimé l’argument partySize du rsvp de Tony. Si Tony avait une invitation, la valeur par défaut serait partySize utilisée dans le RSVP.

    Vous avez supprimé l’argument allergies des réponses de Linh et Noor. Leurs rsvp affichent la valeur par défaut de none « Allergies ».

  3. Enregistrez et exécutez le code pour observer la sortie suivante :

    Sorry, Tony is not on the guest list
    
    Total RSVPs:
    Name: Rebecca,  Party Size: 1,  Allergies: none
    Name: Nadia,    Party Size: 2,  Allergies: Nuts
    Name: Linh,     Party Size: 2,  Allergies: none
    Name: Noor,     Party Size: 4,  Allergies: none
    Name: Jonte,    Party Size: 2,  Allergies: Stone fruit
    

    Notez que les valeurs par défaut sont utilisées à la place d’arguments omis, tels que partySize et allergies.

Récapitulatif

Voici ce que vous avez appris sur les arguments facultatifs et nommés jusqu’à présent :

  • Les paramètres sont facultatifs en définissant une valeur par défaut dans la signature de méthode.
  • Les arguments nommés sont spécifiés avec le nom du paramètre, suivis d’un signe deux-points et de la valeur de l’argument.
  • Lors de la combinaison d’arguments nommés et positionnels, vous devez utiliser l’ordre correct des paramètres.