Übung – Methoden mit optionalen Parametern
Die Sprache "C Sharp" ermöglicht die Verwendung von benannten und optionalen Parametern. Mit diesen Parametertypen können Sie auswählen, welche Argumente für die Methode angegeben werden sollen, sodass Sie nicht auf die in der Methodensignatur definierte Struktur beschränkt sind.
Mit benannten Argumenten können Sie den Wert für einen Parameter mithilfe des Namens und nicht der Position angeben. Mit optionalen Parametern können Sie diese Argumente beim Aufrufen der Methode weglassen.
In dieser Übung erfahren Sie, wie Sie benannte und optionale Parameter verwenden.
Erstellen einer RSVP-Anwendung
In dieser Aufgabe erstellen Sie ein kurzes Formular, das Gäste nutzen können, um sich für eine Veranstaltung anzumelden. Die Gäste werden ihre Personenzahl und eventuelle Allergien angeben. Außerdem fügen Sie die Option zum Einschränken von RSVPs auf eine nur eingeladene Gastliste hinzu.
Löschen Sie im Visual Studio Code-Editor vorhandenen Code aus den vorherigen Übungen.
Geben Sie den folgenden Code in den Visual Studio Code-Editor ein:
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 diesem Code erstellen Sie Variablen zum Speichern der Gastliste und rsvps. Die
RSVP
Methode fügt Gastinformationen an die Liste an, und dieShowRSVPs
Methode zeigt die Gesamt-RSVPs mithilfe der Tab-Escapesequenz an, um Gastinformationen zu trennen.Geben Sie den folgenden Code in die
RSVP
Methode ein, um die Gastliste zu durchsuchen: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 diesem Code überprüfen Sie, ob der Angegebene Name mit einem der Namen in der Gastliste identisch ist. Wenn eine Übereinstimmung gefunden wird, legen Sie den Wert
found
auf "true" fest, und brechen Sie dieforeach
Schleife aus. Istfound
"false" angegeben, zeigen Sie eine Meldung an und verwenden dasreturn
Schlüsselwort, um die Methode zu beenden.Rufen Sie Die Methode auf, indem Sie den folgenden Code oberhalb der
RSVP
Methodensignatur hinzufügen: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();
Speichern Sie den Code, und führen Sie den Code aus, um die folgende Ausgabe zu beobachten:
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
Verwenden von benannten Argumenten
Beim Aufrufen einer Methode, die viele Parameter akzeptiert, kann es schwierig sein, zu verstehen, was die Argumente darstellen. Die Verwendung von benannten Argumenten kann die Lesbarkeit des Codes verbessern. Verwenden Sie ein benanntes Argument, indem Sie den Parameternamen gefolgt vom Argumentwert angeben. In dieser Aufgabe üben Sie die Verwendung von benannten Argumenten.
Suchen Sie die folgende Codezeile:
RSVP("Linh", 2, "none", false);
Aktualisieren Sie den Methodenaufruf wie folgt:
RSVP(name: "Linh", partySize: 2, allergies: "none", inviteOnly: false);
Beachten Sie, dass Sie den Namen des Parameters angeben, gefolgt von einem Doppelpunkt und dem Wert. Diese Syntax definiert ein benanntes Argument. Es ist nicht erforderlich, alle Argumente zu benennen. Die folgende Syntax ist beispielsweise auch gültig:
RSVP("Linh", 2, allergies: "none", inviteOnly: false);
RSVP("Linh", partySize: 2, "none", false);
Benannte Argumente, wenn sie mit Positionsargumenten verwendet werden, sind gültig, wenn sie an der richtigen Position verwendet werden. Benannte Argumente sind auch gültig, solange keine Positionsargumente gefolgt sind. Zum Beispiel, das Einfügen von
"Linh"
und2
am Ende wäre ungültig.RSVP(allergies: "none", inviteOnly: false, "Linh", 2);
Wenn Sie diesen Code eingegeben haben, wird die folgende Fehlermeldung angezeigt:
Named argument 'allergies' is used out-of-position but is followed by an unnamed argument
Suchen Sie die folgende Codezeile:
RSVP("Tony", 1, "Jackfruit", true);
Aktualisieren Sie den Methodenaufruf wie folgt:
RSVP("Tony", inviteOnly: true, allergies: "Jackfruit", partySize: 1);
Beachten Sie, dass die benannten Argumente nicht in der ursprünglichen Reihenfolge angezeigt werden müssen. Das argument ohne Namen
Tony
ist jedoch ein Positionsargument und muss in der übereinstimmenden Position angezeigt werden.Speichern Sie den Code, und führen Sie den Code aus, um die folgende Ausgabe zu beobachten:
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
Beachten Sie, dass die Verwendung benannter Argumente die Ausgabe nicht ändert.
Deklarieren optionaler Parameter
Ein Parameter wird optional, wenn ihm ein Standardwert zugewiesen wird. Wenn ein optionaler Parameter aus den Argumenten weggelassen wird, wird der Standardwert verwendet, wenn die Methode ausgeführt wird. In diesem Schritt legen Sie die Parameter partySize
allergies
und inviteOnly
optional fest.
Um optionale Parameter zu definieren, aktualisieren Sie die
RSVP
Methodensignatur wie folgt:void RSVP(string name, int partySize = 1, string allergies = "none", bool inviteOnly = true)
Nehmen Sie sich einen Moment Zeit, um die Syntax zu beobachten. Die Parameter werden weiterhin durch Kommas getrennt, aber die Parameter
partySize
allergies
, undinviteOnly
werden jeweils einem Wert zugewiesen.Als Nächstes aktualisieren Sie die Aufrufe von
RSVP
, um die optionalen Parameter anzuwenden.Aktualisieren Sie Ihren Code wie folgt:
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);
Beachten Sie in jedem Methodenaufruf, dass der Name nie weggelassen wird. Wenn eine Methode aufgerufen wird, müssen immer alle erforderlichen Argumente eingeschlossen werden. Optionale Argumente können jedoch weggelassen werden.
In diesem Code haben Sie die Argumente
1, "none", true
von Rebeccas rsvp entfernt. Da diese Argumente dem Standardwert entsprechen, ist das Ergebnis von Rebeccas rsvp identisch.Sie haben das
inviteOnly
Argument aus Nadias rsvp entfernt. Da der Standardwert voninviteOnly
true
ist, ist das Ergebnis von Nadias Rückmeldung identisch.Sie haben das
partySize
Argument aus Tonys rsvp entfernt. Wenn Tony eine Einladung hatte, wird der StandardwertpartySize
in der RSVP verwendet.Sie haben sowohl das
allergies
-Argument von Linhs als auch Noors RSVPs entfernt. Ihre RSVPs zeigen den Standardwert vonnone
für "Allergien" an.Speichern Sie den Code, und führen Sie den Code aus, um die folgende Ausgabe zu beobachten:
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
Beachten Sie, dass die Standardwerte anstelle von weggelassenen Argumenten wie
partySize
undallergies
verwendet werden.
Zusammenfassung
Hier erfahren Sie, was Sie bisher über optionale und benannte Argumente gelernt haben:
- Parameter werden durch Festlegen eines Standardwerts in der Methodensignatur optional.
- Benannte Argumente werden mit dem Parameternamen angegeben, gefolgt von einem Doppelpunkt und dem Argumentwert.
- Wenn Sie benannte und positionale Argumente kombinieren, müssen Sie die richtige Reihenfolge von Parametern verwenden.