Gyakorlat – Választható paraméterekkel rendelkező metódusok

Befejeződött

A C Sharp nyelv lehetővé teszi a névvel ellátott és választható paraméterek használatát. Az ilyen típusú paraméterekkel kiválaszthatja, hogy mely argumentumokat szeretné megadni a metódusnak, így nem korlátozódik a metódus-aláírásban meghatározott struktúrára.

Az elnevezett argumentumok lehetővé teszik egy paraméter értékének megadását a neve helyett a pozíciójával. Az opcionális paraméterek lehetővé teszik, hogy kihagyja ezeket az argumentumokat a metódus meghívásakor.

Ebben a gyakorlatban megtanulhatja, hogyan használhatja az elnevezett és az opcionális paramétereket is.

RSVP-alkalmazás létrehozása

Ebben a feladatban egy rövid alkalmazást fog létrehozni, amely lehetővé teszi a vendégek számára, hogy visszaigazolhassák részvételüket egy eseményre. A vendégek közlik a létszámukat és allergiáikat. Azt is hozzáadhatja, hogy az RSVP-k csak meghívásos vendéglistára korlátozódjanak.

  1. A Visual Studio Code Editorban törölje a meglévő kódot az előző gyakorlatokból.

  2. Írja be a következő kódot a Visual Studio Code Editorba:

    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]);
        }
    }
    

    Ebben a kódban változókat hoz létre a vendéglista és az rsvps tárolásához. A RSVP metódus hozzáfűzi a vendégadatokat a listához, és a ShowRSVPs metódus megjeleníti az összes RSVP-t, a vendégadatokat tabulátorral elválasztva.

  3. Adja meg a következő kódot a RSVP vendéglistában való kereséshez:

    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;
        }
    }
    

    Ebben a kódban ellenőrzi, hogy a megadott név megegyezik-e a vendéglistában szereplő nevek bármelyikével. Ha talál egyezést, a found értékét igazra állítja, és kilép a foreach hurokból. Ha found hamis, megjelenik egy üzenet, és a return kulcsszóval leállítja a metódust.

  4. Hívja meg a saját metódusát úgy, hogy hozzáadja a következő kódot a RSVP metódus-aláírás fölé:

    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. Mentse és futtassa a kódot a következő kimenet megfigyeléséhez:

    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
    

Névvel ellátott argumentumok használata

Ha olyan metódust hív meg, amely sok paramétert fogad el, bonyolult lehet megérteni, hogy az argumentumok mit jelentenek. Az elnevezett argumentumok használata javíthatja a kód olvashatóságát. Használjon elnevezett argumentumot a paraméternév és az argumentumérték megadásával. Ebben a feladatban nevesített argumentumok használatát fogja gyakorolni.

  1. Keresse meg a következő kódsort: RSVP("Linh", 2, "none", false);

  2. Frissítse a metódushívást az alábbiak szerint:

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

    Figyelje meg, hogy megadja a paraméter nevét, majd egy kettőspontot és egy értéket. Ez a szintaxis egy elnevezett argumentumot határoz meg. Nem szükséges az összes argumentumot megnevezni. Például a következő szintaxis is érvényes:

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

    A névvel ellátott argumentumok pozícióargumentumokkal való használata akkor érvényes, ha a megfelelő pozícióban használják őket. Az elnevezett argumentumok mindaddig érvényesek, amíg nem követik őket pozícióargumentumok. Például a beleszámítandó "Linh" és 2 a végén érvénytelen lenne:

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

    Ha beírta ezt a kódot, a következő hibaüzenet jelenik meg: Named argument 'allergies' is used out-of-position but is followed by an unnamed argument

  3. Keresse meg a következő kódsort: RSVP("Tony", 1, "Jackfruit", true);

  4. Frissítse a metódushívást az alábbiak szerint:

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

    Figyelje meg, hogy a névvel ellátott argumentumoknak nem kell az eredeti sorrendben megjelenniük. A meg nem nevezett argumentum Tony azonban egy pozícióargumentum, és az egyező pozícióban kell megjelennie.

  5. Mentse és futtassa a kódot a következő kimenet megfigyeléséhez:

    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
    

    Figyelje meg, hogy az elnevezett argumentumok használata nem változtatja meg a kimenetet.

Választható paraméterek deklarálása

Egy paraméter nem kötelező, ha az alapértelmezett értéket rendeli hozzá. Ha nem kötelező paramétert hagy ki az argumentumokból, a metódus végrehajtásakor az alapértelmezett értéket használja a rendszer. Ebben a lépésben a paramétereket partySize, allergies és inviteOnly opcionálissá kell tennie.

  1. A választható paraméterek meghatározásához frissítse a metódus aláírását az RSVP alábbiak szerint:

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

    Szánjon egy kis időt a szintaxis megfigyelésére. A paramétereket továbbra is vesszők választják el egymástól, de a paraméterek partySizeallergies, és inviteOnly mindegyik egy értékhez van rendelve.

    Ezután frissíteni fogja a RSVP hívásait az opcionális paraméterek alkalmazására.

  2. Frissítse a kódot a következőre:

    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);
    

    Minden metódushívásnál vegye észre, hogy a név sosem hiányzik. Metódus meghívása esetén minden szükséges argumentumot tartalmaznia kell. A választható argumentumok azonban kihagyhatók.

    Ebben a kódban eltávolította a paramétereket 1, "none", true Rebecca RSVP-éről. Mivel ezek az argumentumok megegyeznek az alapértelmezett értékkel, Rebecca rsvp-jének eredménye ugyanaz.

    Eltávolította az inviteOnly argumentumot Nadia rsvp-jából. Mivel az alapértelmezett érték inviteOnly az true, a Nadia rsvp eredménye ugyanaz.

    Eltávolította az partySize argumentumot Tony válaszából. Ha Tonynak meghívója lenne, az alapértelmezett érték partySize az RSVP-ben lesz használva.

    Eltávolította az allergies argumentumot mind Linh, mind Noor RSVP válaszából. Az RSVP-k az "Allergiák" alapértelmezett értékét none-ként jelenítik meg.

  3. Mentse és futtassa a kódot a következő kimenet megfigyeléséhez:

    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
    

    Figyelje meg, hogy a rendszer az alapértelmezett értékeket a kihagyott argumentumok helyett használja, például partySize a .allergies

Összefoglalás

A választható és elnevezett argumentumokról eddig az alábbiakat tanulta:

  • A paraméterek megadása nem kötelező, ha beállít egy alapértelmezett értéket a metódus-aláírásban.
  • Az elnevezett argumentumok a paraméter nevével vannak megadva, amelyet kettőspont és argumentumérték követ.
  • A névvel ellátott és a pozícióargumentumok kombinálásakor a paraméterek helyes sorrendjét kell használnia.