Exercice - Méthodes avec des paramètres facultatifs
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.
Dans l’Éditeur Visual Studio Code, supprimez tout code existant des exercices précédents.
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
RSVPajoute les informations des invités à la liste, tandis que la méthodeShowRSVPsaffiche 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.Entrez le code suivant dans la
RSVPmé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 à
foundla valeur true et quittez laforeachboucle. Sifoundla valeur est false, vous affichez un message et utilisez lereturnmot clé pour terminer la méthode.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();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.
Recherchez la ligne de code suivante :
RSVP("Linh", 2, "none", false);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"et2à 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 argumentRecherchez la ligne de code suivante :
RSVP("Tony", 1, "Jackfruit", true);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
Tonynon nommé est un argument positionnel et doit apparaître dans la position correspondante.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 fruitNotez 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.
Pour définir des paramètres facultatifs, mettez à jour la signature de méthode
RSVPcomme 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,allergiesetinviteOnlysont chacun attribués à une valeur.Ensuite, vous allez mettre à jour les appels sur
RSVPpour appliquer les paramètres facultatifs.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", truedu 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
inviteOnlydu rsvp de Nadia. Étant donné que la valeurinviteOnlypar défaut esttrue, le résultat du rsvp de Nadia est le même.Vous avez supprimé l’argument
partySizedu rsvp de Tony. Si Tony avait une invitation, la valeur par défaut seraitpartySizeutilisée dans le RSVP.Vous avez supprimé l’argument
allergiesdes réponses de Linh et Noor. Leurs rsvp affichent la valeur par défaut denone« Allergies ».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 fruitNotez que les valeurs par défaut sont utilisées à la place d’arguments omis, tels que
partySizeetallergies.
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.