Übung – Methoden mit optionalen Parametern

Abgeschlossen

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.

  1. Löschen Sie im Visual Studio Code-Editor vorhandenen Code aus den vorherigen Übungen.

  2. 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 die ShowRSVPs Methode zeigt die Gesamt-RSVPs mithilfe der Tab-Escapesequenz an, um Gastinformationen zu trennen.

  3. 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 die foreach Schleife aus. Ist found "false" angegeben, zeigen Sie eine Meldung an und verwenden das return Schlüsselwort, um die Methode zu beenden.

  4. 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();
    
  5. 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.

  1. Suchen Sie die folgende Codezeile: RSVP("Linh", 2, "none", false);

  2. 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" und 2 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

  3. Suchen Sie die folgende Codezeile: RSVP("Tony", 1, "Jackfruit", true);

  4. 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.

  5. 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 partySizeallergies und inviteOnly optional fest.

  1. 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 partySizeallergies, und inviteOnly werden jeweils einem Wert zugewiesen.

    Als Nächstes aktualisieren Sie die Aufrufe von RSVP, um die optionalen Parameter anzuwenden.

  2. 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 von inviteOnlytrue 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 Standardwert partySize in der RSVP verwendet.

    Sie haben sowohl das allergies-Argument von Linhs als auch Noors RSVPs entfernt. Ihre RSVPs zeigen den Standardwert von none für "Allergien" an.

  3. 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 und allergies 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.