Øvelse – Undersøk TryParse()-metoden
- 12 minutter
Når du arbeider med data, må du noen ganger konvertere strengdata til en numerisk datatype. Som du lærte i forrige enhet, fordi strengdatatypen kan inneholde en ikke-numerisk verdi, er det mulig at det å utføre en konvertering fra en string til en numerisk datatype forårsaker en kjøretidsfeil.
Følgende kode:
string name = "Bob";
Console.WriteLine(int.Parse(name));
Forårsaker følgende unntak:
System.FormatException: 'Input string was not in a correct format.'
Hvis du vil unngå et formatunntak, bruker du TryParse()-metoden på måldatatypen.
Bruk TryParse()
TryParse()-metoden gjør flere ting samtidig:
- Den prøver å analysere en streng i den angitte numeriske datatypen.
- Hvis den lykkes, lagres den konverterte verdien i en ut-parameter, forklart i avsnittet nedenfor.
- Den returnerer en for
boolå angi om handlingen var vellykket eller mislykket.
Du kan bruke den boolske returverdien til å utføre handlinger på verdien (for eksempel utføre en beregning), eller vise en melding hvis analyseoperasjonen mislyktes.
Merk deg
I denne øvelsen skal du bruke int datatypen, men en lignende TryParse() metode er tilgjengelig på alle numeriske datatyper.
Ut-parametere
Metoder kan returnere en verdi eller returnere "void" - noe som betyr at de ikke returnerer noen verdi. Metoder kan også returnere verdier gjennom out parametere, som er definert akkurat som en inndataparameter, men inkluderer nøkkelordet out .
TryParse() en streng i et heltall
Slette eller bruke linjekommentaroperatoren
//til å kommentere alle kodene fra de forrige øvelsene.Oppdater koden i Visual Studio Code Editor på følgende måte:
string value = "102"; int result = 0; if (int.TryParse(value, out result)) { Console.WriteLine($"Measurement: {result}"); } else { Console.WriteLine("Unable to report the measurement."); }Undersøk denne kodelinjen:
if (int.TryParse(value, out result))Når du kaller opp en metode med en
outparameter, må du bruke nøkkelordetoutfør variabelen, som inneholder verdien. Parameterenouter tilordnet variabelenresulti koden(int.TryParse(value,out result). Deretter kan du bruke verdien parameterenoutinneholder i resten av koden ved hjelp av variabelenresult.Metoden
int.TryParse()returnerertruehvis den konverterte variabelenstringvaluetil enint. Ellers returneresfalseden. Så omgi uttalelsen i enifuttalelse, og deretter utføre beslutningslogikken, tilsvarende.Den konverterte verdien lagres i variabelen
intresult. Variabelenintresultdeklareres og initialiseres før denne kodelinjen, så den skal være tilgjengelig både i kodeblokkene som tilhørerifogelsesetninger, så vel som utenfor dem.Nøkkelordet
outinstruerer kompilatorenTryParse()om at metoden ikke returnerer en verdi bare på den tradisjonelle måten (som en returverdi), men også kommuniserer en utdata gjennom denne toveisparameteren.Når du kjører koden, skal du se følgende utdata:
Measurement: 102
Bruk analysering int senere i kode
Hvis du vil vise at variabelen
resultsom ble deklarert tidligere, fylles ut av parameterenoutog også kan brukes senere i koden, oppdaterer du koden i Visual Studio Code Editor som følger: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}");Velg Lagre på Visual Studio Code File-menyen. Den Program.cs filen må lagres før du bygger eller kjører koden.
Høyreklikk på TestProjecti EXPLORER-panelet, og velg deretter Åpne i integrert terminal. Et terminalpanel skal åpnes, og bør inneholde en ledetekst som viser at terminalen er åpen for plasseringen av TestProject-mappen.
Skriv inn dotnet-kjøring i terminalkommandoledeteksten for å kjøre koden, og trykk deretter ENTER.
Merk deg
Hvis du ser en melding som sier «Finner ikke et prosjekt å kjøre», må du kontrollere at terminalkommandoledeteksten viser den forventede plasseringen av TestProject-mappen. For eksempel:
C:\Users\someuser\Desktop\csharpprojects\TestProject>Du skal se følgende utdata:
Measurement: 102 Measurement (w/ offset): 152Undersøk den siste kodelinjen i forrige eksempel,
Console.WriteLine($"Measurement (w/ offset): {50 + result}");siden variabelenresulter definert utenfor hvis-setningen, kan den åpnes senere i koden.
Endre strengvariabelen til en verdi som ikke kan analyseres
Til slutt kan du se på det andre scenarioet – der det TryParse() med vilje gis en ugyldig verdi som ikke kan konverteres til en int.
Endre den første kodelinjen, og start variabelen
valuepå nytt til en annen verdi.string value = "bad";Endre også den siste kodelinjen for å sikre at resultatet er større enn 0 før du viser den andre meldingen.
if (result > 0) Console.WriteLine($"Measurement (w/ offset): {50 + result}");Hele kodeeksemplet skal nå samsvare med følgende kode:
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}");Lagre kodefilen, og bruk deretter Visual Studio Code til å kjøre koden. Du bør få følgende resultat:
Unable to report the measurement.Undersøk de to siste kodelinjene som ble lagt til i det forrige eksemplet.
if (result > 0) Console.WriteLine($"Measurement (w/ offset): {50 + result}");Siden
resulter definert utenfor setningenif,resultkan du få tilgang til senere i koden utenfor kodeblokkene.resultDeretter kan du kontrollere en verdi som er større enn null, før du tillaterresultat + forskyvning skrives som utdata. Hvis du ser etter enresultverdi som er større enn null, unngår du å skrive ut en forskyvningsverdi etterUnable to report the measurement.meldingen.
Sammendrag
Metoden TryParse() er et verdifullt verktøy. Her er få raske ideer å huske.
- Brukes
TryParse()når du konverterer en streng til en numerisk datatype. -
TryParse()returnerertruehvis konverteringen er vellykket,falsehvis den mislykkes. - Ut-parametere gir en sekundær metode for en metode som returnerer en verdi. I dette tilfellet returnerer parameteren
outden konverterte verdien. - Bruk nøkkelordet
outnår du sender inn et argument til en metode som har definert enoutparameter.