Tyypinmuunnos

Jos kohdetyyppi voi esittää kaikki muunnettavan tyypin arvot (esim. reaaliluvut sisältävät kokonaisluvut), jolloin tietoa ei katoa, voi muunnokset tehdä yksinkertaisesti

int kokonaisluku = 123;
float reaaliluku = kokonaisluku;
Jos on mahdollista, että tietoa katoaa muunnoksen yhteydessä, kuten reaaliluvusta kokonaisluvuksi muutettaessa, täytyy käyttää operaattoria (). Tässä täytyy huomioida, ettei toimenpide pyöristä lukuja, vaan jättää yksinkertaisesti desimaaliosan pois.

 float reaaliluku = 32.7f;
int kokonaisluku = (int)reaaliluku;
 

Parse- ja TryParse-metodit

Tyyppien Parse- ja TryParse-metodeilla voi "parsia" arvon merkkijonosta. Näiden kahden ero on siinä, että Parse heittää virheen mikäli merkkijono ei ollut sopivassa muodossa. Kannattaa muistaa, että desimaalierottimena käytetään oletuksena järjestelmässä määriteltyä desimaalierotinta.

Parse


string teksti1 = "123";
// toimii
int luku = int.Parse(teksti1);

string teksti2 = "true";
bool tosi = bool.Parse(teksti2);

string teksti3 = "123.2";
// virhe
luku = int.Parse(teksti3);
// tämäkin heittää virheen, jos desimaalierottimena käytetään pilkkua
float = float.Parse(teksti3);

TryParse


string teksti = "123";
int luku;
if(int.TryParse(teksti, out luku))
{
	// parsiminen onnistui
}
else
{
	// parsiminen epäonnistui
}

Convert-luokan metodit

Convert-luokasta löytyy metodit ToXXX, joilla perustietotyyppejä voi muuttaa toiseksi

string arvo = "123,2";
float luku = Convert.ToSingle(arvo);
byte arvo2 = 123;
char merkki = Convert.ToChar(arvo2);
Lisäksi sieltä löytyy metodi ChangeType, jolla voi yrittää muuttaa minkä tahansa tyypin toiseksi.

string arvo = "123,2";
float luku = (float)Convert.ChangeType(arvo, typeof(float));

as-operaattori

As-operaattorilla voi yrittää muuttaa nullable-tyypin toiseksi. Jos tyypit eivät ole yhteensopivia, tulos on null.

object kissa = new Kissa();
Elain elain = kissa as Elain;
if(elain != null)
{
	// Kissa-luokka on yhteensopiva Elain-luokan kanssa
	elain.TeeJotainElaimellista();
}