Gyakorlat – A TryParse() metódus vizsgálata
- 12 perc
Az adatok használatakor időnként sztringadatokat kell numerikus adattípussá alakítania. Ahogy az előző leckében megtudta, mivel a sztring adattípus nem numerikus értéket tartalmazhat, lehetséges, hogy a numerikus adattípusból string való átalakítás futásidejű hibát okoz.
Például a következő kód:
string name = "Bob";
Console.WriteLine(int.Parse(name));
Ez a következő hibát okozza:
System.FormatException: 'Input string was not in a correct format.'
A formátumkivétel elkerülése érdekében használja a TryParse() metódust a céladattípuson.
A TryParse() használata
A TryParse() metódus egyszerre több mindent hajt végre:
- Megkísérli a sztring feldolgozását az adott numerikus adattípussá.
- Ha sikeres, a konvertált értéket egy out paraméterben tárolja, amelyet a következő szakaszban ismertetünk.
- Visszaad egy értéket
bool, amely jelzi, hogy a művelet sikeres vagy sikertelen volt-e.
A logikai visszatérési érték használatával műveleteket hajthat végre az értéken (például végrehajthat egy számítást), vagy megjeleníthet egy üzenetet, ha az elemzési művelet sikertelen volt.
Feljegyzés
Ebben a gyakorlatban az int adattípust fogja használni, de minden numerikus adattípushoz hasonló TryParse() módszer érhető el.
Kimenő paraméterek
A metódusok visszaadhatnak egy értéket, vagy "void" értéket adhatnak vissza, ami azt jelenti, hogy nem adnak vissza értéket. A metódusok olyan paramétereken keresztül out is visszaadhatnak értékeket, amelyek ugyanúgy vannak definiálva, mint egy bemeneti paraméter, de tartalmazzák a kulcsszót out .
TryParse() sztring egy intben
Törölje vagy használja a sor megjegyzés operátorát
//az előző gyakorlatok összes kódjának megjegyzéséhez.Frissítse a kódot a Visual Studio Code Editorban az alábbiak szerint:
string value = "102"; int result = 0; if (int.TryParse(value, out result)) { Console.WriteLine($"Measurement: {result}"); } else { Console.WriteLine("Unable to report the measurement."); }Vizsgálja meg ezt a kódsort:
if (int.TryParse(value, out result))Ha egy metódust paraméterrel
outhív meg, a kulcsszótouta változó előtt kell használnia, amely tartalmazza az értéket. Aoutparaméter a kódbanresult(int.TryParse(value,out resultlévő változóhoz)van rendelve. Ezután a változóvalouthasználhatja azt az értéket, amelyet aresultparaméter a kód többi részében tartalmaz.A
int.TryParse()metódus akkor adtruevissza értéket, ha sikeresen konvertálta astringváltozótvalue;intellenkező esetben visszaadjafalse. Az utasítást ezért egyifutasításba ágyazzuk be, és ezek alapján hajtjuk végre az elágazó logikát.A konvertált érték a
intváltozóbanresultlesz tárolva. Aintváltozóresulta kódsor előtt van deklarálva és inicializálva, ezért elérhető kell legyen mind a kódblokkokon belül, amelyek a ésifutasításokhoz tartoznak, mind azon kívül.A
outkulcsszó arra utasítja a fordítót, hogy aTryParse()metódus nem csak a hagyományos módon ad vissza értéket (visszatérési értékként), hanem ezen a kétirányú paraméteren keresztül is közli a kimenetet.A kód futtatásakor a következő kimenetnek kell megjelennie:
Measurement: 102
Az elemzés int használata később a kódban
Annak bemutatásához, hogy a
resultkorábban deklarált változót aoutparaméter tölti ki, és később a kódban is használható, frissítse a kódot a Visual Studio Code Editorban az alábbiak szerint:string value = "102"; int result = 0; if (int.TryParse(value, out result)) { Console.WriteLine($"Measurement: {result}"); } else { Console.WriteLine("Unable to report the measurement."); } Console.WriteLine($"Measurement (w/ offset): {50 + result}");A Visual Studio Code File menüben válassza a Mentés lehetőséget. A Program.cs fájlt a kód létrehozása vagy futtatása előtt menteni kell.
Az EXPLORER panelen nyissa meg a Terminált a TestProject mappa helyén, kattintson a jobb gombbal a TestProject elemre, majd válassza a Megnyitás az integrált terminálban lehetőséget. Meg kell nyitnia egy terminálpanelt, és tartalmaznia kell egy parancssort, amely azt mutatja, hogy a terminál nyitva van a TestProject mappa helye előtt.
A terminál parancssorában a kód futtatásához írja be a dotnet run parancsot , majd nyomja le az Enter billentyűt.
Feljegyzés
Ha "Nem található futtatandó projekt" üzenet jelenik meg, győződjön meg arról, hogy a Terminál parancssora megjeleníti a TestProject mappa várt helyét. Például:
C:\Users\someuser\Desktop\csharpprojects\TestProject>A következő kimenetnek kell megjelennie:
Measurement: 102 Measurement (w/ offset): 152Vizsgálja meg az előző minta utolsó kódsorát,
Console.WriteLine($"Measurement (w/ offset): {50 + result}");mivel a változó azresultif utasításon kívül van definiálva, a kód későbbi részében is elérhető.
Módosítsa a sztringváltozót olyan értékre, amely nem elemezhető
Végül tekintse meg a másik forgatókönyvet , amelyben szándékosan TryParse() rossz értéket kap, amelyet nem lehet átalakítani int.
Módosítsa az első kódsort, és állítsa újra újra a változót
valueegy másik értékre.string value = "bad";A kód utolsó sorát is írja át úgy, hogy a második üzenet kiírása előtt ellenőrizze, hogy az eredmény nagyobb, mint 0.
if (result > 0) Console.WriteLine($"Measurement (w/ offset): {50 + result}");A teljes példakódnak most meg kell egyeznie a következő kóddal:
string value = "bad"; int result = 0; if (int.TryParse(value, out result)) { Console.WriteLine($"Measurement: {result}"); } else { Console.WriteLine("Unable to report the measurement."); } if (result > 0) Console.WriteLine($"Measurement (w/ offset): {50 + result}");Mentse a kódfájlt, majd a Visual Studio Code használatával futtassa a kódot. A következő eredményt kell kapnia:
Unable to report the measurement.Vizsgálja meg az előző mintában hozzáadott kód utolsó két sorát.
if (result > 0) Console.WriteLine($"Measurement (w/ offset): {50 + result}");Mivel
resultazifutasításon kívül van definiálva,resulta kód későbbi részében a kódblokkon kívül is elérhető. Így ellenőrizhetiresulta nullánál nagyobb értéket, mielőtt lehetővé tennéresulta + eltolás kimenetként való írását. Ha nullánál nagyobb értéket keresresult, elkerüli az eltolási érték nyomtatását azUnable to report the measurement.üzenet után.
Összefoglalás
A TryParse() metódus értékes eszköz. Érdemes megjegyezni az alábbi néhány gondolatot.
- Sztring numerikus adattípusra konvertálásakor használja a
TryParse()metódust. -
TryParse()akkor adjatruevissza, ha az átalakítás sikeres,falseha az sikertelen. - A kimenő paraméterek egy értéket visszaadó metódus másodlagos eszközét biztosítják. Ebben az esetben a paraméter a
outkonvertált értéket adja vissza. - Használja a kulcsszót
out, amikor egy argumentumot egy paramétertoutdefiniáló metódusnak ad át.
Tesztelje tudását
Visszajelzés
Hasznosnak találta ezt az oldalt?
No
Segítségre van szüksége ezzel a témakörrel kapcsolatban?
Szeretné kipróbálni az Ask Learn használatát a témakör tisztázásához vagy áttekintéséhez?