Gyakorlat – Választható paraméterekkel rendelkező metódusok
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.
A Visual Studio Code Editorban törölje a meglévő kódot az előző gyakorlatokból.
Í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
RSVPmetódus hozzáfűzi a vendégadatokat a listához, és aShowRSVPsmetódus megjeleníti az összes RSVP-t, a vendégadatokat tabulátorral elválasztva.Adja meg a következő kódot a
RSVPvendé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 aforeachhurokból. Hafoundhamis, megjelenik egy üzenet, és areturnkulcsszóval leállítja a metódust.Hívja meg a saját metódusát úgy, hogy hozzáadja a következő kódot a
RSVPmetó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();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.
Keresse meg a következő kódsort:
RSVP("Linh", 2, "none", false);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"és2a 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 argumentKeresse meg a következő kódsort:
RSVP("Tony", 1, "Jackfruit", true);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
Tonyazonban egy pozícióargumentum, és az egyező pozícióban kell megjelennie.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 fruitFigyelje 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.
A választható paraméterek meghatározásához frissítse a metódus aláírását az
RSVPalá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, ésinviteOnlymindegyik egy értékhez van rendelve.Ezután frissíteni fogja a
RSVPhívásait az opcionális paraméterek alkalmazására.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", trueRebecca RSVP-éről. Mivel ezek az argumentumok megegyeznek az alapértelmezett értékkel, Rebecca rsvp-jének eredménye ugyanaz.Eltávolította az
inviteOnlyargumentumot Nadia rsvp-jából. Mivel az alapértelmezett értékinviteOnlyaztrue, a Nadia rsvp eredménye ugyanaz.Eltávolította az
partySizeargumentumot Tony válaszából. Ha Tonynak meghívója lenne, az alapértelmezett értékpartySizeaz RSVP-ben lesz használva.Eltávolította az
allergiesargumentumot mind Linh, mind Noor RSVP válaszából. Az RSVP-k az "Allergiák" alapértelmezett értékétnone-ként jelenítik meg.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 fruitFigyelje meg, hogy a rendszer az alapértelmezett értékeket a kihagyott argumentumok helyett használja, például
partySizea .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.