Oefening: methoden met optionele parameters
De C Sharp-taal maakt het gebruik van benoemde en optionele parameters mogelijk. Met deze typen parameters kunt u selecteren welke argumenten u aan de methode wilt opgeven, zodat u niet beperkt bent tot de structuur die is gedefinieerd in de methodehandtekening.
Met benoemde argumenten kunt u de waarde voor een parameter opgeven met behulp van de naam in plaats van positie. Met optionele parameters kunt u deze argumenten weglaten bij het aanroepen van de methode.
In deze oefening leert u hoe u zowel benoemde als optionele parameters gebruikt.
Een RSVP-toepassing maken
In deze taak maakt u een korte toepassing waarmee gasten kunnen reageren op een uitnodiging voor een evenement. De gasten zullen de grootte van hun groep en eventuele allergieën doorgeven. U voegt ook de optie toe om RSVP's te beperken tot een alleen-uitnodigende gastenlijst.
Verwijder in de Visual Studio Code-editor alle bestaande code uit de vorige oefeningen.
Typ de volgende code in de Visual Studio Code-editor:
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]); } }In deze code maakt u variabelen voor het opslaan van de gastenlijst en rsvps. De
RSVPmethode voegt gastgegevens toe aan de lijst en deShowRSVPsmethode geeft het totale aantal RSVP's weer met behulp van de escapereeks voor tabbladen om gastgegevens te scheiden.Voer de volgende code in de
RSVPmethode in om de lijst met gasten te doorzoeken: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; } }In deze code controleert u of de opgegeven naam gelijk is aan een van de namen in de lijst met gasten. Als er een overeenkomst wordt gevonden, stelt u
foundin op true en verlaat u deforeachlus. Alsfounddit onwaar is, geeft u een bericht weer en gebruikt u hetreturntrefwoord om de methode te beëindigen.Roep uw methode aan door de volgende code toe te voegen boven de handtekening van de
RSVPmethode: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();Sla de code op en voer deze uit om de volgende uitvoer te bekijken:
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
Benoemde argumenten gebruiken
Wanneer u een methode aanroept die veel parameters accepteert, kan het lastig zijn om te begrijpen wat de argumenten vertegenwoordigen. Het gebruik van benoemde argumenten kan de leesbaarheid van uw code verbeteren. Gebruik een benoemd argument door de parameternaam op te geven, gevolgd door de argumentwaarde. In deze taak oefent u met benoemde argumenten.
Zoek de volgende coderegel:
RSVP("Linh", 2, "none", false);Werk de methode-aanroep als volgt bij:
RSVP(name: "Linh", partySize: 2, allergies: "none", inviteOnly: false);U ziet dat u de naam van de parameter opgeeft, gevolgd door een dubbele punt en de waarde. Deze syntaxis definieert een benoemd argument. Het is niet nodig om alle argumenten een naam te geven. De volgende syntaxis is bijvoorbeeld ook geldig:
RSVP("Linh", 2, allergies: "none", inviteOnly: false);RSVP("Linh", partySize: 2, "none", false);Benoemde argumenten, wanneer deze worden gebruikt met positionele argumenten, zijn geldig als ze op de juiste positie worden gebruikt. Benoemde argumenten zijn ook geldig zolang ze niet worden gevolgd door positionele argumenten. Het opnemen
"Linh"en2aan het einde zou bijvoorbeeld ongeldig zijn:RSVP(allergies: "none", inviteOnly: false, "Linh", 2);Als u deze code hebt ingevoerd, krijgt u de volgende fout:
Named argument 'allergies' is used out-of-position but is followed by an unnamed argumentZoek de volgende coderegel:
RSVP("Tony", 1, "Jackfruit", true);Werk de methode-aanroep als volgt bij:
RSVP("Tony", inviteOnly: true, allergies: "Jackfruit", partySize: 1);U ziet dat de benoemde argumenten niet in de oorspronkelijke volgorde hoeven te worden weergegeven. Het argument zonder naam is echter een positioneel argument
Tonyen moet worden weergegeven in de overeenkomende positie.Sla de code op en voer deze uit om de volgende uitvoer te bekijken:
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 fruitU ziet dat het gebruik van benoemde argumenten de uitvoer niet wijzigt.
Optionele parameters declareren
Een parameter wordt optioneel wanneer er een standaardwaarde wordt toegewezen. Als een optionele parameter wordt weggelaten uit de argumenten, wordt de standaardwaarde gebruikt wanneer de methode wordt uitgevoerd. In deze stap maakt u de parameters partySizeallergies en inviteOnly optioneel.
Als u optionele parameters wilt definiëren, werkt u de handtekening van de
RSVPmethode als volgt bij:void RSVP(string name, int partySize = 1, string allergies = "none", bool inviteOnly = true)Neem even de tijd om de syntaxis te observeren. De parameters worden nog steeds gescheiden door komma's, maar de parameters
partySize,allergieseninviteOnlyworden elk toegewezen aan een waarde.Vervolgens werkt u de aanroepen naar
RSVPbij om de optionele parameters toe te passen.Werk uw code bij naar het volgende:
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);In elke methodeaanroep ziet u dat de naam nooit wordt weggelaten. Wanneer een methode wordt aangeroepen, moeten alle vereiste argumenten altijd worden opgenomen. Optionele argumenten kunnen echter worden weggelaten.
In deze code hebt u de argumenten
1, "none", trueverwijderd uit Rebecca's rsvp. Omdat deze argumenten overeenkomen met de standaardwaarde, is het resultaat van Rebecca's rsvp hetzelfde.U hebt het
inviteOnlyargument verwijderd uit de rsvp van Nadia. Omdat de standaardwaardeinviteOnlyis, istruehet resultaat van de rsvp van Nadia hetzelfde.Je hebt het
partySizeargument verwijderd uit Tony's rsvp. Als Tony een uitnodiging had, wordt de standaardwaardepartySizegebruikt in de RSVP.U hebt het
allergiesargument verwijderd uit de rsvps van Linh en Noor. Hun rsvps geven de standaardwaarde voornone'Allergieën' weer.Sla de code op en voer deze uit om de volgende uitvoer te bekijken:
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 fruitU ziet dat de standaardwaarden worden gebruikt in plaats van weggelaten argumenten, zoals
partySizeenallergies.
Samenvatting
Dit is wat u tot nu toe hebt geleerd over optionele en benoemde argumenten:
- Parameters worden optioneel gemaakt door een standaardwaarde in te stellen in de methodehandtekening.
- Benoemde argumenten worden opgegeven met de parameternaam, gevolgd door een dubbele punt en de argumentwaarde.
- Wanneer u benoemde en positionele argumenten combineert, moet u de juiste volgorde van parameters gebruiken.