May.29

Wat is een Lambda Expression?

LambdaExpressions.pngDe Lambda Expression is 1 van de nieuwe taalfeatures van C# 3.0. De nieuwe Visual Studio gaat hier ondersteuning voor bieden. Wat is een Lambda Expression eigenlijk?

Delegates
Even terug naar C# 1.0, daar begon het allemaal met delegates. Een delegate is eigenlijk een blauwdruk van een methode. Bijvoorbeeld

Bovenstaande delegate beschrijft een functie die een Person object als parameter verwacht en een boolean teruggeeft. Vervolgens kan er een functie worden gemaakt die met de delegate overeenkomt. Bijvoorbeeld:

Het voordeel van een delegate is dat de implementatie van de functie onafhankelijk is van de delegate blauwdruk. Zo zou de volgende implementatie ook prima overeenkomen met de genoemde delegate.

We kunnen met onderstaande methode de resultaten van beidde delegate implementaties testen:

Bovenstaande functie roepen we in C# 1.0 als volgt aan:

Delegates worden ook gebruikt in het event model van het .NET framework. In dat geval praten we over EventHandlers. Aangezien bovenstaande oplossing vrij omslachtig is als het gaat om een vrij simpele implementatie van een functie op basis van een delegate is er in C# 2.0 de anonymous method geintroduceerd.

Anonymous Methods
Dankzij de Anonymous Method hoeven we in bovenstaande geval geen specifiek implementatie te schrijven voor de IsTrue delegate maar kunnen we de FirstNameStartsWithT test als volgt formuleren:

Het grote voordeel, de inhoud van de functie FirstNameStartsWithT kan direct worden meegegeven zonder er een specifieke method te hoeven schrijven, een anonieme methode dus…

Lambda Expressions
Aangezien dit ook nog een redelijk omslachtige schrijfwijze is heeft men in C# 3.0 de Lambda Expression geintroduceerd. Syntactisch worden als eerste de parameters benoemd, benaming naar eigen keuze. Dan volgt “=>” daarna volgt de implementatie zoals in het bovenstaande delegate en anonymous method voorbeeld. Dus..

Deze korte schrijfwijze heeft zijn effect op de LINQ implementatie. Het is echter de vraag of dat dankzij de Lambda Expression mogelijk werd of dat de Lambda Expression zijn bestaan dankt aan de LINQ implementatie 😉 Ach, dat zullen we nooit weten…

LambdaExpressionsTest.zip – Voorbeeldcode voor Visual Studio Orcas Beta 1

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