Exerciții - Examinați metoda TryParse()
- 12 minute
Atunci când lucrați cu date, uneori, trebuie să efectuați conversia datelor șir într-un tip de date numeric. După cum ați învățat în unitatea anterioară, deoarece tipul de date șir poate conține o valoare non-numerică, este posibil ca efectuarea unei conversii dintr-o string într-un tip de date numerice să cauzeze o eroare la momentul rulării.
De exemplu, următorul cod:
string name = "Bob";
Console.WriteLine(int.Parse(name));
Provoacă următoarea excepție:
System.FormatException: 'Input string was not in a correct format.'
Pentru a evita o excepție de formatare, utilizați metoda TryParse() pentru tipul de date țintă.
Utilizați TryParse()
Metoda TryParse() face mai multe lucruri simultan:
- Încearcă să analizeze un șir în tipul de date numerice dat.
- Dacă reușește, stochează valoarea convertită într-un parametru out, explicată în secțiunea următoare.
- Returnează o
boolpentru a indica dacă acțiunea a reușit sau nu a reușit.
Puteți utiliza valoarea de returnare Boolean pentru a acționa asupra valorii (cum ar fi efectuarea unui calcul) sau pentru a afișa un mesaj dacă operațiunea de analiză nu a reușit.
Notă
În acest exercițiu, veți utiliza tipul de date int, dar o metodă de TryParse() similară este disponibilă pentru toate tipurile de date numerice.
Parametri exteriori
Metodele pot returna o valoare sau pot returna "nule" - ceea ce înseamnă că nu returnează nicio valoare. Metodele pot returna, de asemenea, valori prin parametrii out, care sunt definiți la fel ca un parametru de intrare, dar includ cuvântul cheie out.
TryParse() un șir într-un int
Ștergeți sau utilizați operatorul de comentarii de linie
//pentru a comenta întregul cod din exercițiile anterioare.Actualizați codul în Visual Studio Code Editor după cum urmează:
string value = "102"; int result = 0; if (int.TryParse(value, out result)) { Console.WriteLine($"Measurement: {result}"); } else { Console.WriteLine("Unable to report the measurement."); }Examinați această linie de cod:
if (int.TryParse(value, out result))Atunci când apelați o metodă cu un parametru
out, trebuie să utilizați cuvântul cheieoutînaintea variabilei, care conține valoarea. Parametrulouteste atribuit variabileiresultdin codul(int.TryParse(value,out result). Apoi puteți utiliza valoarea pe care parametrulouto conține pe tot restul codului, utilizând variabilaresult.Metoda
int.TryParse()returneazătruedacă i s-a efectuat cu succes conversia variabileistringvalueîntr-oint; în caz contrar, returneazăfalse. Așadar, încadrați instrucțiunea într-o instrucțiuneif, apoi efectuați logica decizională, în consecință.Valoarea convertită este stocată în
intvariabilăresult. Variabilaintresulteste declarată și inițializată înainte de această linie de cod, deci ar trebui să fie accesibilă atât în interiorul blocurile de cod care aparțin instrucțiunilorifșielse, cât și în afara dintre ele.Cuvântul cheie
outinstruiește compilatorul că metodaTryParse()nu returnează o valoare doar în mod tradițional (ca valoare returnată), ci comunică, de asemenea, o ieșire prin acest parametru bidirecțional.Atunci când rulați codul, ar trebui să vedeți următoarea ieșire:
Measurement: 102
Utilizarea int analizat mai târziu în cod
Pentru a demonstra că variabila
resultcare a fost declarată anterior, este completată de parametruloutși este utilizabilă ulterior în cod, actualizați codul în Visual Studio Code Editor după cum urmează: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}");În meniul Fișier Visual Studio Code, selectați Salvare. Fișierul Program.cs trebuie salvat înainte de construirea sau rularea codului.
În panoul EXPLORER, pentru a deschide un Terminal la locația folderului TestProject, faceți clic dreapta pe TestProject, apoi selectați Deschidere în terminal integrat. Un panou terminal ar trebui să se deschidă și ar trebui să includă o linie de comandă care arată că Terminal este deschis la locația folderului TestProject.
În linia de comandă Terminal, pentru a rula codul, tastați run dotnet apoi apăsați pe Enter.
Notă
Dacă vedeți un mesaj care spune "Nu s-a găsit un proiect de rulat", asigurați-vă că linia de comandă Terminal afișează locația așteptată a folderului TestProject. De exemplu:
C:\Users\someuser\Desktop\csharpprojects\TestProject>Ar trebui să vedeți următoarea ieșire:
Measurement: 102 Measurement (w/ offset): 152Examinați ultima linie de cod din exemplul anterior,
Console.WriteLine($"Measurement (w/ offset): {50 + result}");, Deoarece variabilaresulteste definită în afara instrucțiunii if, aceasta poate fi accesată mai târziu în cod.
Modificarea variabilei șir la o valoare care nu poate fi analizată
În sfârșit, uitați-vă la celălalt scenariu - unde TryParse() este dată intenționat o valoare greșită care nu poate fi convertită într-o int.
Modificați prima linie de cod, reinițializați variabila
valuela o altă valoare.string value = "bad";De asemenea, modificați ultima linie de cod pentru a vă asigura că rezultatul este mai mare decât 0 înainte de a afișa al doilea mesaj.
if (result > 0) Console.WriteLine($"Measurement (w/ offset): {50 + result}");Întregul exemplu de cod ar trebui să corespundă acum următorului cod:
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}");Salvați fișierul de cod, apoi utilizați Visual Studio Code pentru a rula codul. Ar trebui să obțineți următorul rezultat:
Unable to report the measurement.Examinați ultimele două linii de cod adăugate în eșantionul anterior.
if (result > 0) Console.WriteLine($"Measurement (w/ offset): {50 + result}");Deoarece
resulteste definită în afara instrucțiunii deif,resultpoate fi accesat mai târziu în codul dvs. în afara blocurilor de cod. Așadar,resultpoate fi verificată pentru o valoare mai mare decât zero înainte de a permiteresult+ deplasare să fie scrisă ca rezultat. Verificarea unei valoriresultmai mare decât zero evită imprimarea unei valori offset după mesajulUnable to report the measurement..
Recapitula
Metoda TryParse() este un instrument valoros. Iată câteva idei rapide de reținut.
- Utilizați
TryParse()la conversia unui șir într-un tip de date numeric. -
TryParse()returneazătruedacă conversia are succes,falsedacă nu reușește. - Parametrii exteriori furnizează un mijloc secundar al unei metode care returnează o valoare. În acest caz, parametrul
outreturnează valoarea convertită. - Utilizați cuvântul cheie
outatunci când treceți într-un argument la o metodă care a definit un parametruout.
Verificați-vă cunoștințele
Feedback
Această pagină a fost utilă?
Nu
Aveți nevoie de ajutor cu acest subiect?
Doriți să încercați să utilizați Întrebați Microsoft Learn pentru a clarifica sau primi îndrumări privind acest subiect?