Amintiți-vă din lecția expresii lambda că putem declara o metodă local, fără nume, și să o folosim într-un singur loc, acolo unde o declarăm. Acesta este un exemplu de expresie lambda:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
using System; namespace BunaLume { public class Program { delegate bool UnDelegat(int _parametru); public static void Main() { UnDelegat _delegat = i => i > 5; Console.Read(); } } } |
Scurtă recapitulare: am declarat un delegat numit UnDelegat care acceptă orice metodă care ia un int ca parametru și returnează un bool, apoi i-am atribuit această expresie: i => i> 5, care este chiar expresia lambda, iar compilatorul este perfect fericit, pentru că poate deduce faptul că i este un int și, da, i> 5 este o expresie care returnează o valoare booleană.
Expresiile Lambda au fost introduse în C# 3.0, în timp ce metodele anonime au fost adăugate în versiunea 2.0 a C#. Doar din acest motiv, gândiți-vă la expresiile lambda ca fiind o formă mai elegantă a metodelor anonime, sau gândiți-vă la ele ca și metode anonime, dar îmbunătățite.
Pentru declararea unei metode anonime, avem următoarea sintaxă:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
using System; namespace BunaLume { public class Program { delegate bool UnDelegat(int _parametru); public static void Main() { UnDelegat _delegat = delegate(int i) { return i > 5; }; Console.Read(); } } } |
Codul de mai sus este similar cu cel în care foloseam expresia lambda, și face același lucru. Doar că în acest caz, suntem obligați să folosim cuvântul cheie delegate, apoi să specificăm parametrul i între paranteze și de asemenea, să afirmăm că este un int, apoi să folosim acolade și, dintr-o dată, avem un corp de metodă normal, în interiorul căruia suntem obligați și să folosim cuvântul cheie return, și așa mai departe. Una peste alta, este exact ca o metodă reală, cu excepția faptului că nu folosim modificatori de acces, tipuri de returnare sau nume de metode.
La fel ca expresiile lambda, avem voie să folosim mai multe afirmații sau expresii în corpul metodei, dar eu, personal, cred că dacă aveți un corp de metodă care are mai multă logică decât o simplă expresie, este cel mai probabil un indicator puternic că ar trebui să declarați o metodă separată, normală.
Ca o concluzie, nu folosiți metode anonime, folosiți expresii lambda, sunt mai noi, mai scurte și mai ușor de utilizat.
Tags: delegați, expresie lambda, metodă anonimă, metode