# Visual Basic/Typeconversie
## Inleiding typeconversie

Het kan gebeuren dat je een variabele wilt/moet converteren van een bepaald type naar een ander type. Zo levert de opdracht Console.ReadLine altijd een string op, ook als naar een getal wordt gevraagd. Je moet dan de string expliciet converteren naar b.v. een integer. Dat doe je met de volgende constructie:
Maar ook tussen getallen kan conversie nodig zijn. Zo bevatten de typen Integer, Decimal, Long, Single, Double, enz. allemaal getallen, maar ook hier is conversie nodig of minstens aan te raden voor de duidelijkheid. Voorbeelden zijn b.v.:
In de tweede regel zie je dat je een decimale punt moet gebruiken. Als je het programma schrijft, moet je altijd een decimale punt gebruiken. Het is nu eenmaal Engels. Maar als je hetzelfde getal intypt bij een Console.ReadLine én je Windows hebt ingesteld op Nederlands, moet je een komma gebruiken in plaats van een punt. Een beetje verwarrend, maar dit laat het verschil zien tussen het schrijven van een programma en de uitvoering ervan.
In de laatste regel wordt de inhoud van getal2 afgerond tot 56. Dit gebeurt steeds als een getal met cijfers na de komma wordt geconverteerd naar een geheel getal (Byte, Short, Integer, UInteger, Long, ULong). Hierbij wordt het bankiersalgoritme gebruikt. Dat houdt in dat alle getallen normaal worden afgerond, behalve getallen die precies 0,5 achter de komma hebben. Die worden afgerond op het meest nabijgelegen even getal. Zo levert de conversies van 3,5 en 4,5 allebei de waarde 4 op. Denk hier goed aan!!
Je kunt dit voorkomen door de functie Round te gebruiken om b.v. een Double waarde af te ronden. Hierbij kun je opgeven hoe het getal moet worden afgerond. Het resultaat is weer een Double, dus je moet ook nog CInt gebruiken om er een geheel getal van te maken. Gebruik de volgende constructie:
Het is een beetje ingewikkeld. Door de binnenste haakjes wordt eerst getal2 afgerond (Round) en daarna door de buitenste haakjes geconverteerd naar een Integer (CInt).

## Conversiefuncties

Visual Basic kent een aantal conversiefuncties. Iedere functie converteert een willekeurige expressie naar een bepaald type. Zo nodig vindt er afronding plaats. De conversiefuncties zijn:
De naam van een conversiefuctie bestaat uit een C gevolgd door de afkorting van het type waarnaar geconverteerd moet worden.
Let op dat conversies naar een geheel getal gebruik maken van het bankiersalgoritme (zie hierboven).
Ter verduidelijking volgen hier enige voorbeelden:
Onderstaand voorbeeld gebruikt de functie CBool om een expressie te converteren naar een Boolean waarde. Als een expressie de waarde 0 oplevert, is het resultaat False en anders True.
Onderstaand voorbeeld gebruikt de functie CByte om een expressie te converteren naar een Byte waarde.
Onderstaand voorbeeld gebruikt de functie CChar om het eerste teken van een string te converteren naar een Char waarde.
Het argument van CChar moet een string zijn. Het argument kan geen numeriek type zijn (b.v. Integer of Long).
Onderstaand voorbeeld gebruikt de functie CDate om een string te converteren naar een datum. De eerste twee regels converteren een string naar een datum, de twee regels daarna een literal.
Onderstaand voorbeeld gebruikt de functie CDbl om een expressie te converteren naar een Double waarde.
Onderstaand voorbeeld gebruikt de functie CDec om een numerieke waarde te converteren naar een Decimal waarde.
Onderstaand voorbeeld gebruikt de functie CInt om een numerieke waarde te converteren naar een Integer waarde.
Onderstaand voorbeeld gebruikt de functie CLng om een numerieke waarde te converteren naar een Long waarde.
Onderstaand voorbeeld gebruikt de functie CObj om een numerieke waarde te converteren naar een Object waarde. Dit object bevat een pointer naar de waarde. Naast een numerieke waarde kunnen alle mogelijke waarden (string, char, boolean, datum) worden omgezet naar een Object.
Onderstaand voorbeeld gebruikt de functie CShort om een numerieke waarde te converteren naar een Short waarde.
Onderstaand voorbeeld gebruikt de functie CSng om een numerieke waarde te converteren naar een Single waarde. Let erop dat bij een conversie van b.v. Double naar Single een verlies van minder significante cijfers kan optreden.
Onderstaand voorbeeld gebruikt de functie CStr om een numerieke waarde te converteren naar een String waarde.
Onderstaand voorbeeld gebruikt de functie CStr om een datum te converteren naar een String waarde.
CStr zet een datum altijd om in de korte notatie volgens de taalinstellingen van Windows, bijvoorbeeld: "6/15/2003 4:35:47 PM".

## De functie CType

Deze functie converteert een expressie naar een opgegeven type. Het formaat is:
Hierbij is expressie een geldige expressie; als de waarde buiten het bereik van typenaam valt, treedt er een fout op.
typenaam is één van de typen die je in een Dim-statement kunt gebruiken, dus Boolean, Byte, Char, Date, Decimal, Double, Integer, Long, Object, SByte, Short, Single, String, UInteger, ULong en UShort.
CType is geen echte functie, maar wordt door de compiler vertaald, zodat deze conversie over het algemeen sneller is dan andere conversie-methoden.
Voorbeeld:

## De functie ToString

Ieder object heeft een methode ToString. Deze methode zet, afhankelijk van het soort object, de naam of de inhoud om naar een String. Op deze manier kun je alle datatypen omzetten naar een string, b.v.: