Øvelse – Undersøg metoden TryParse()
- 12 minutter
Når du arbejder med data, skal du nogle gange konvertere strengdata til en numerisk datatype. Som du har lært i det forrige undermodul, er det muligt, at udførelse af en konvertering fra en string til en numerisk datatype forårsager en kørselsfejl, da strengdatatypen kan indeholde en ikke-numerisk værdi.
Følgende kode kan f.eks. være:
string name = "Bob";
Console.WriteLine(int.Parse(name));
Forårsager følgende undtagelse:
System.FormatException: 'Input string was not in a correct format.'
Hvis du vil undgå en formatundtagelse, skal du bruge metoden TryParse() på destinationsdatatypen.
Brug TryParse()
Metoden TryParse() gør flere ting samtidigt:
- Den forsøger at fortolke en streng i den angivne numeriske datatype.
- Hvis det lykkes, gemmes den konverterede værdi i en ud-parameter, som forklaret i følgende afsnit.
- Den returnerer en
booltil at angive, om handlingen lykkedes eller mislykkedes.
Du kan bruge den booleske returværdi til at udføre handlinger på værdien (f.eks. udføre en beregning) eller få vist en meddelelse, hvis fortolkningshandlingen mislykkedes.
Seddel
I denne øvelse skal du bruge datatypen int, men en lignende TryParse() metode er tilgængelig for alle numeriske datatyper.
Ud-parametre
Metoder kan returnere en værdi eller returnere "void" – hvilket betyder, at de ikke returnerer nogen værdi. Metoder kan også returnere værdier via out parametre, som defineres på samme måde som en inputparameter, men omfatter nøgleordet out.
TryParse() en streng til en int
Slet eller brug linjekommentaroperatoren
//til at kommentere hele koden fra de forrige øvelser.Opdater din kode i Visual Studio Code Editor på følgende måde:
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øg denne kodelinje:
if (int.TryParse(value, out result))Når du kalder en metode med en
outparameter, skal du bruge nøgleordetoutfør variablen, som indeholder værdien. Parameterenouter tildelt variablenresulti koden(int.TryParse(value,out result). Du kan derefter bruge den værdi, som parameterenoutindeholder i resten af koden, ved hjælp af variablenresult.Metoden
int.TryParse()returnerertrue, hvisstringvariabelvaluekonverteres til enint. Ellers returneresfalse. Så omgiv sætningen i enif-sætning, og udfør derefter beslutningslogikken i overensstemmelse hermed.Den konverterede værdi gemmes i variablen
intresult. Variablenintresulterklæres og initialiseres før denne kodelinje, så den bør være tilgængelig både i kodeblokke, der tilhørerif- ogelse-sætninger, samt uden for af dem.Nøgleordet
outinstruerer compileren i, at metodenTryParse()ikke returnerer en værdi på den traditionelle måde (som en returværdi), men også kommunikerer et output via denne tovejsparameter.Når du kører koden, får du vist følgende output:
Measurement: 102
Brug den parsede int senere i koden
Hvis du vil vise, at den
resultvariabel, der blev erklæret tidligere, udfyldes af parameterenoutog også kan bruges senere i din kode, skal du opdatere din kode i Visual Studio Code Editor på følgende måde: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}");Vælg Gemi menuen Visual Studio Code File . Den Program.cs fil skal gemmes, før du kan oprette eller køre koden.
Højreklik på TestProjecti panelet EXPLORER for at åbne en Terminal på mappen TestProject, og vælg derefter Åbn i integreret terminal. Der skal åbnes et terminalpanel, og det skal indeholde en kommandoprompt, der viser, at Terminalen er åben for din TestProject-mappeplacering.
I kommandoprompten Terminal skal du skrive dotnet run og derefter trykke på Enter for at køre din kode.
Seddel
Hvis du får vist en meddelelse med teksten "Et projekt, der ikke kan køres", skal du kontrollere, at terminalkommandoprompten viser den forventede placering af mappen TestProject. Eksempel:
C:\Users\someuser\Desktop\csharpprojects\TestProject>Du bør kunne se følgende output:
Measurement: 102 Measurement (w/ offset): 152Undersøg den sidste kodelinje i det forrige eksempel
Console.WriteLine($"Measurement (w/ offset): {50 + result}");, da variablenresulter defineret uden for if-sætningen, kan du få adgang til den senere i koden.
Rediger strengvariablen til en værdi, der ikke kan fortolkes
Endelig skal du se på det andet scenarie – hvor TryParse() bevidst får en dårlig værdi, der ikke kan konverteres til en int.
Rediger den første kodelinje, og start variablen igen
valuetil en anden værdi.string value = "bad";Rediger også den sidste kodelinje for at sikre, at resultatet er større end 0, før den anden meddelelse vises.
if (result > 0) Console.WriteLine($"Measurement (w/ offset): {50 + result}");Hele kodeeksemplen skal nu stemme overens 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}");Gem din kodefil, og brug derefter Visual Studio Code til at køre din kode. Du bør få følgende resultat:
Unable to report the measurement.Undersøg de sidste to kodelinjer, der er tilføjet i det forrige eksempel.
if (result > 0) Console.WriteLine($"Measurement (w/ offset): {50 + result}");Da
resulter defineret uden forif-sætningen, kan du få adgang tilresultsenere i din kode uden for kodeblokkene. Så kanresultkontrolleres for en værdi, der er større end nul, før du tillader, atresult+ forskydning skrives som output. Hvis du søger efter enresultværdi, der er større end nul, udskrives der ikke en forskydningsværdi efter denUnable to report the measurement.meddelelse.
Resumé
Metoden TryParse() er et værdifuldt værktøj. Her er nogle hurtige ideer, du skal huske.
- Brug
TryParse(), når du konverterer en streng til en numerisk datatype. -
TryParse()returnerertrue, hvis konverteringen lykkes,falsehvis det mislykkes. - Out-parametre giver en sekundær metode til en metode, der returnerer en værdi. I dette tilfælde returnerer parameteren
outden konverterede værdi. - Brug nøgleordet
out, når du overfører et argument til en metode, der har defineret enoutparameter.
Tjek din viden
Feedback
Var denne side nyttig?
No
Har du brug for hjælp til dette emne?
Vil du prøve at bruge Ask Learn til at tydeliggøre eller guide dig gennem dette emne?