Basis Typecasting
Veeg om het menu te tonen
Typecasting is het proces waarbij een waarde van het ene gegevenstype naar een ander wordt omgezet. Dit is vaak mogelijk tussen typen die getallen voorstellen. Zo kun je bijvoorbeeld een float omzetten naar een int en omgekeerd. Het direct omzetten van een string naar een int is echter niet logisch en niet mogelijk zonder extra stappen.
Er zijn twee soorten typecasting: impliciete typecasting en expliciete typecasting.
Impliciete typecasting gebeurt automatisch wanneer een waarde van het ene type naar het andere wordt omgezet, meestal van een kleiner naar een groter gegevenstype.
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
Impliciete typecasting gebeurt automatisch wanneer een kleiner gegevenstype wordt omgezet naar een groter gegevenstype. De grootte van een gegevenstype wordt bepaald door hoeveel data het kan bevatten, gemeten in bits. Een int kan bijvoorbeeld 32 bits bevatten, terwijl een long 64 bits kan bevatten, dus het omzetten van een int naar een long gebeurt automatisch. Op dezelfde manier kan een float zonder problemen worden omgezet naar een double.
Hier is een lijst van gegevenstypen, geordend van klein naar groot:
char -> int -> long -> float -> double
Expliciete typecasting is wanneer je als programmeur de computer opdracht geeft om een waarde naar een ander gegevenstype om te zetten. Dit is nodig bij het omzetten van een groter gegevenstype naar een kleiner, omdat er gegevens verloren kunnen gaan. Bijvoorbeeld, het omzetten van de float 3.14 naar een integer resulteert in 3, waarbij het decimale deel verloren gaat. Daarom moet je de computer expliciet aangeven om zulke conversies uit te voeren.
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); } } }
Om de fout in de bovenstaande code op te lossen, moeten we val1 expliciet casten naar een integerwaarde.
De syntaxis van een cast is (datatype) value, bijvoorbeeld (int) 3.1415. In dit geval schrijven we dus (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); } } }
Bedankt voor je feedback!
Vraag AI
Vraag AI
Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.