Jul.07

Conversie van (nullable) valuetypes

Convert.pngJe kent het wel, je wilt de conversie van het ene naar het andere valuetype doen. Bijvoorbeeld een string omzetten naar een int. Gebruikelijk is om dat te doen met de volgende code:

Een andere optie is:

Deze laatste methode kan handig zijn als gebruik wordt gemaakt van reflection. Je weet dan vaak niet vooraf om welke bron en/of doeltypes het gaat.

Het type van MyProperty is onbekend maar zolang de string “881974” geconverteerd kan worden naar het type MyPropertyType is er geen probleem. Als MyPropertyType een string, decimal, int, float etc… is gaat het goed. Is het een bool dan gaat het uiteraard mis.

Allemaal heel mooi natuurlijk, maar deze Convert functies bieden geen ondersteuning voor nullable types. Willen we een bijvoorbeeld een string omzetten naar een int? (nullable int) dan hebben we een probleem. Tot nu toe, want hier is een oplossing ;-).

Bovenstaande functie ondersteund de conversie van nullable types. Wil je een echt elegante oplossing dan kunnen we met behulp van Generics de volgende methode maken binnen dezelfde DoConvert klasse, namelijk:

Je gebruikt deze functie als volgt:

Voila!

Deel dit Verhaal:
  • facebook
  • twitter
  • gplus

Over Ton Snoei

Een enthousiaste ontwikkelaar in de allerbreedste zin van het woord.

Het aansturen maar vooral coachen van mensen geeft me veel plezier en een leuke uitdaging. Ik houdt me graag bezig met het bouwen van software maar ook met alle anderen dingen die komen kijken bij het vak dat IT heet.

Met als achtergrond ontwikkelaar heb ik veel ervaring met C# .NET en alles wat daarbij komt kijken. Deze kennis komt nog regelmatig goed van pas. Mijn liefde voor ontwikkeling van software is nooit verdwenen en heb mij daarom in het afgelopen jaar meer verdiept in Java, Android, iOS/iPhone/iPad (Monotouch/Xamarin), PHP en Unity 3D development. Ik noem dat altijd maar: "Lego-spelen voor grote mensen" ;-)

Kortom van de grote lijnen naar projecten tot hands-on problem solven.

Laat een reactie achter

Comment