04 Aug 2007 |
| |||
Wat doet deze operator precies?De operator retourneert de left-hand als deze niet null is, als dit wel het geval is dan retourneert hij de right-hand. Dit houdt ook in dat deze operator alleen gebruikt kan worden met nullable types. Zodra je deze gebruikt bij een niet nullable type zal je de compile error Compiler Error CS0019 om je oren krijgen. Even een code voorbeeld om de werking van de ?? operator te verduidelijken: int? a; int b = a ?? 100; Hier zal variable b dus geinitializeerd worden met de waarde 100. int? a = 1; int b = a ?? 100; Hier zal variable b dus geinitializeerd worden met de waarde 1. Als dit nog niet duidelijk genoeg is, hier een code voorbeeld die hetzelfde doet op 3 verschillende manieren: int? a = null; int b; // If construction if( a.HasValue ) { b = a.Value; } else { b = 100; } // ?: operator b = ( a.HasValue ? a.Value : 100 ); // ?? operator b = a ?? 100; Alle drie de methodes hebben hetzelfde resultaat, alleen de ?? operator is wat mij betreft een stuk leesbaarder! Performance winst!Niet alleen de leesbaarheid gaat vooruit, maar het kan ook performance winst opleveren. In de vorige code voorbeelden is a een variable. Maar wat nu als we a vervangen door een complexe tijdrovende method? In het geval van de if constructie zal de method twee keer uitgevoerd worden als de return waarde niet null is. Bij de ?: operator is dit ook het geval. Bij de ?? operator word de left-hand maar 1 keer uitgelezen en de return waarde word vast gehouden. Als deze niet null is zal de left-hand niet nogmaal bekeken worden, maar de vast gehouden return waarde van de left-hand zal geretourneerd worden. In het kortReden genoeg dus om de ?? operator te gebruiken! Maar hier heb je alles nog even op een rijtje:
Set as favorite
Bookmark
Email This
Trackback(0)
Commentaar (0)
![]() Schrijf commentaar
|
Bedankt voor je schitterende presentatie. Ik heb niets dan positieve geluiden gehoord.
Peter Criellaard
Microsoft
Eindelijk een presentatie waarmee ik ook iets mee kan in de praktijk!
Dennis Schuuring
Max BV
Bedankt voor de presentatie, het was voor mij 1 van de betere momenten van die dag!
Henri Koppen
Arcenus