Perustason Tyyppimuunnos
Pyyhkäise näyttääksesi valikon
Tyyppimuunnos tarkoittaa arvon muuttamista yhdestä tietotyypistä toiseen. Tämä on usein mahdollista tyyppien välillä, jotka edustavat lukuja. Esimerkiksi float voidaan muuntaa int:ksi ja päinvastoin. Sen sijaan string-tyypin muuttaminen suoraan int-tyyppiin ei ole loogista eikä mahdollista ilman lisävaiheita.
Tyyppimuunnoksia on kahta tyyppiä: implisiittinen tyyppimuunnos ja eksplisiittinen tyyppimuunnos.
Implisiittinen tyyppimuunnos tapahtuu automaattisesti, kun arvo muunnetaan yhdestä tyypistä toiseen, yleensä pienemmästä suurempaan tietotyyppiin.
main.cs
1234int val1 = 10; long val2 = val1; // int is automatically converted to long float val3 = var1; // int is automatically converted to float double var4 = var1; // int is automatically converted to double
Implisiittinen tyyppimuunnos tapahtuu automaattisesti, kun pienempi tietotyyppi muunnetaan suurempaan. Tietotyypin koko määräytyy sen mukaan, kuinka paljon dataa se voi sisältää, mitattuna bitteinä. Esimerkiksi int voi sisältää 32 bittiä, kun taas long voi sisältää 64 bittiä, joten int-tyypin muuntaminen long-tyyppiin tapahtuu automaattisesti. Samoin float voidaan muuntaa double-tyyppiin ilman ongelmia.
Tässä on tietotyyppejä pienimmästä suurimpaan:
char -> int -> long -> float -> double
Eksplisiittinen tyyppimuunnos tarkoittaa, että ohjelmoija määrää tietokoneen muuttamaan arvon toiseen tietotyyppiin. Tämä on tarpeen, kun muunnetaan suuremmasta tietotyypistä pienempään, koska osa tiedoista voi hävitä. Esimerkiksi kun float-arvo 3.14 muunnetaan kokonaisluvuksi, tuloksena on 3 ja desimaaliosa katoaa. Siksi tällaiset muunnokset täytyy tehdä nimenomaisesti.
main.cs
123456789101112131415using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { float val1 = 3.14f; int val2 = val1; // Error: Cannot implicitly convert type 'float' to 'int'. An explicit conversion exists (are you missing a cast?) Console.WriteLine(val1); Console.WriteLine(val2); } } }
Virheen korjaamiseksi yllä olevassa koodissa meidän täytyy suorittaa val1:n eksplisiittinen tyyppimuunnos kokonaisluvuksi.
Tyyppimuunnoksen syntaksi on (datatype) value, esimerkiksi (int) 3.1415. Tässä tapauksessa kirjoitetaan (int) val1:
main.cs
123456789101112131415using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { float val1 = 3.14f; int val2 = (int) val1; Console.WriteLine(val1); Console.WriteLine(val2); } } }
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme