Harjoitus – Tutki TryParse()-menetelmää
- 12 minuuttia
Kun käsittelet tietoja, sinun on joskus muunnettava merkkijonotietoja numeeriseksi tietotyypiksi. Kuten edellisessä osiossa opit, koska merkkijonon tietotyyppi voi sisältää muuta kuin numeerista arvoa, on mahdollista, että muunnoksen suorittaminen string numeerisesta tietotyypistä aiheuttaa suorituksenaikaisen virheen.
Esimerkiksi seuraava koodi:
string name = "Bob";
Console.WriteLine(int.Parse(name));
Aiheuttaa seuraavan poikkeuksen:
System.FormatException: 'Input string was not in a correct format.'
Voit välttää muotopoikkeuksen käyttämällä TryParse()-menetelmää kohdetietotyypissä.
TryParse()-kohdan käyttäminen
TryParse()-menetelmä tekee useita asioita samanaikaisesti:
- Se yrittää jäsentää merkkijonon annettuun numeeriseen tietotyyppiin.
- Jos se onnistuu, se tallentaa muunnetun arvon out -parametrin, joka selitetään seuraavassa osassa.
- Se palauttaa
bool, joka ilmaisee, onko toiminto onnistunut vai epäonnistunut.
Totuusarvon avulla voit suorittaa toiminnon arvolle (kuten suorittaa joitakin laskutoimituksia) tai näyttää sanoman, jos jäsennystoiminto epäonnistui.
Muistiinpano
Tässä harjoituksessa käytät int -tietotyyppiä, mutta samanlainen TryParse() -menetelmä on käytettävissä kaikissa numeerisissa tietotyypeissä.
Parametrit pois
Menetelmät voivat palauttaa arvon tai palauttaa arvon "void", mikä tarkoittaa, että ne eivät palauta arvoa. Menetelmät voivat myös palauttaa arvoja out parametrien kautta, jotka on määritetty samalla tavalla kuin syöteparametri, mutta sisältävät out avainsanan.
TryParse() merkkijono intiksi
Poista rivin kommenttioperaattori
//, jos haluat kommentoida kaikkia koodia edellisistä harjoituksista.Päivitä koodi Visual Studio Code Editorissa seuraavasti:
string value = "102"; int result = 0; if (int.TryParse(value, out result)) { Console.WriteLine($"Measurement: {result}"); } else { Console.WriteLine("Unable to report the measurement."); }Tutki tätä koodiriviä:
if (int.TryParse(value, out result))Kun kutsut -menetelmää
out-parametrilla, sinun on käytettävä avainsanaaoutennen muuttujaa, joka sisältää arvon.out-parametri on määritetty koodi-result(int.TryParse(value,out result)muuttujalle. Voit sitten käyttää arvoa, jonkaoutparametri sisältää koko koodin muissa osissa, käyttämällä muuttujaaresult.int.TryParse()-menetelmä palauttaatrue, jos se onnistui muuntamaanstring-muuttujanvalueint. muussa tapauksessa se palauttaafalse. Ympäröi siis lausekeiflauseessa ja suorita sitten päätöslogiikka vastaavasti.Muunnettu arvo tallennetaan
intmuuttujaanresult.int-muuttujaresulton esimääritettävä ja alustettu ennen tätä koodiriviä, joten sen tulee olla käytettävissä sekäif- ettäelse-lausekkeisiin kuuluvia koodilohkoja sekä niiden ulkopuolella.outohjaa kääntäjää siihen, ettäTryParse()-menetelmä ei palauta arvoa vain perinteisellä tavalla (palautusarvona), vaan myös välittää tuloksen tämän kaksisuuntaisen parametrin kautta.Kun suoritat koodin, sinun pitäisi nähdä seuraava tuloste:
Measurement: 102
Käytä myöhemmin koodin jäsennystä int
Jos haluat osoittaa, että aiemmin määritetty
result-muuttuja täytetäänout-parametrilla ja että sitä voidaan käyttää myöhemmin koodissasi, päivitä koodisi Visual Studio Code Editorissa seuraavasti: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}");Valitse Visual Studio Code Tiedoston -valikosta Tallenna. Program.cs tiedosto on tallennettava ennen koodin rakentamista tai suorittamista.
Avaa EXPLORER-paneelin TestProject-kansion sijainnissa Terminal napsauttamalla hiiren kakkospainikkeella TestProjectja valitsemalla sitten Avaa Integroidussa päätteessä -. Terminal-paneelin pitäisi avautua, ja siinä pitäisi olla komentokehote, joka näyttää, että Terminal on avoinna TestProject-kansiosi sijainnissa.
Suorita koodi Terminal-komentorivillä kirjoittamalla dotnet run ja painamalla enter.
Muistiinpano
Jos näyttöön tulee sanoma "Suoritettavaa projektia ei löytynyt", varmista, että Terminal-komentokehote näyttää odotetun TestProject-kansion sijainnin. Esimerkki:
C:\Users\someuser\Desktop\csharpprojects\TestProject>Sinun pitäisi nähdä seuraava tuloste:
Measurement: 102 Measurement (w/ offset): 152Tutki edellisen näytteen viimeistä koodiriviä eli
Console.WriteLine($"Measurement (w/ offset): {50 + result}");, koskaresult-muuttuja on määritetty if-lausekkeen ulkopuolella, sitä voidaan käyttää myöhemmin koodissasi.
Merkkijonomuuttujan muokkaaminen arvoon, jota ei voi jäsentää
Katso lopuksi toista skenaariota, jossa TryParse() annetaan tarkoituksella virheellinen arvo, jota ei voi muuntaa int.
Muokkaa ensimmäistä koodiriviä ja alusta muuttuja uudelleen
valueeri arvoon.string value = "bad";Muokkaa myös viimeistä koodiriviä varmistaaksesi, että tulos on suurempi kuin 0, ennen kuin toinen sanoma näytetään.
if (result > 0) Console.WriteLine($"Measurement (w/ offset): {50 + result}");Koko koodiesimerkin pitäisi nyt vastata seuraavaa koodia:
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}");Tallenna kooditiedosto ja suorita sitten koodisi Visual Studio Coden avulla. Sinun pitäisi saada seuraava tulos:
Unable to report the measurement.Tutki kahta viimeistä koodiriviä, jotka on lisätty edelliseen malliin.
if (result > 0) Console.WriteLine($"Measurement (w/ offset): {50 + result}");Koska
resulton määritettyif-lausekkeen ulkopuolella,resultvoi käyttää myöhemmin koodissasi koodilohkojen ulkopuolella. Sen jälkeenresultvoidaan tarkistaa, onko arvo suurempi kuin nolla, ennen kuinresult+ siirtymä voidaan kirjoittaa tulosteena. Jos haluat hakearesultarvoa, joka on suurempi kuin nolla, voit tulostaa siirtymäarvonUnable to report the measurement.jälkeen.
Kertaus
TryParse() menetelmä on arvokas työkalu. Seuraavassa on muutamia nopeita ideoita, jotka kannattaa muistaa.
- Käytä
TryParse()muunnettaessa merkkijono numeeriseksi tietotyypiksi. -
TryParse()palauttaatrue, jos muuntaminen onnistuu,false, jos se epäonnistuu. - Out-parametrit tarjoavat toissijaisen tavan menetelmälle, joka palauttaa arvon. Tässä tapauksessa
out-parametri palauttaa muunnetun arvon. - Käytä avainsanaa
outvälitettäessä argumenttina menetelmään, joka on määrittänytoutparametrin.