Ați observat probabil faptul că în aproape toate lecțiile anterioare în care am discutat despre evenimente, am folosit Action ca tipul de delegat pentru eveniment. Evident, puteți utiliza orice tip de delegat doriți, dar, în marea majoritate a cazurilor, prin convenție (și doar prin convenție!),… Read more
Archive for februarie, 2020
EventHandler, sender și EventArgs
vineri, februarie 21st, 2020Evenimente: Add și Remove
miercuri, februarie 19th, 2020În lecția anterioară v-am arătat modul în care compilatorul implementează concret evenimentele, adăugând de fapt în fundal două metode numite addon() și removeon() și făcând câmpul Action privat, astfel încât să nu îl putem invoca în mod direct. Dar acest lucru a fost efectuat în limbajul MSIL, iar noi nu trebuie să ne preocupăm cu un nivel atât de jos.… Read more
Evenimente
miercuri, februarie 5th, 2020Evenimentele reprezintă un mod mai sigur de implementare a tiparului observatorului descris în lecția precedentă, și sunt pasul evolutiv al delegaților bruti. Este posibil să fi auzit despre programarea bazată pe evenimente ca un concept ce descrie o paradigmă de programare în care fluxul programului este determinat de evenimente precum acțiuni ale utilizatorului (click-uri de mouse, apăsări de taste), ieșiri ale senzorilor ori mesaje din alte programe sau fire de execuție.… Read more
Tiparul observatorului
luni, februarie 3rd, 2020Conform Microsoft, tiparul observatorului este un design comportamental care permite unui obiect să notifice alte obiecte despre modificări ale stării sale.
Multor programatori începători (și chiar și celor mai experimentați) le este greu să înțeleagă legătura dintre delegați și evenimente, iar fundația pe care este construită această legătură este reprezentată tocmai de tiparul observatorului.… Read more
Closures
duminică, februarie 2nd, 2020Să considerăm următoarea Action:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
using System; namespace BunaLume { public class Program { public static void Main() { int i = 0; Action a = () => i++; a(); a(); a(); Console. |
Metode anonime
sâmbătă, februarie 1st, 2020Amintiț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: