Presentation laddar. Vänta.

Presentation laddar. Vänta.

Programmering i C# 7. Delegerare och notifierare.

Liknande presentationer


En presentation över ämnet: "Programmering i C# 7. Delegerare och notifierare."— Presentationens avskrift:

1 Programmering i C# 7. Delegerare och notifierare

2 Programmering i C# - Kapitel 7 2 Delegerare Ett delegerarobjekt innehåller referenser till metoder Metoderna kan anropas via delegerarobjektet Kan användas för callback, för eventlogik, och i flera andra designlösningar

3 Programmering i C# - Kapitel Anrop via delegerare SortTwoObjects är delegerarobjektet, associerat till någon metod class Services // illustrerar callback-logik { public static void Sort(object CollectionToSort, SortDelegate SortTwoObjects) { while (…) if(SortTwoObjects(objA, objB)) … ; } … }

4 Programmering i C# - Kapitel 7 4 Delegerartypen Delegerartypen deklareras med särskild syntax – ger klass härledd från Delegate Typen avgör vilka metoder som kan associeras Statiska, instansmetoder, samma klass, annan klass, objekt av valfri klass… delegate bool SortDelegate(object A, object B);

5 Programmering i C# - Kapitel 7 5 Delegerarobjektet Objektet skapas med konstruktor som tar metodnamn som parameter! Används sedan som om det var en metod class MyCollection { public bool Compare(object o1, object o2) { … } } MyCollection coll = new MyCollection(); SortDelegate callback = new SortDelegate(coll.Compare); Services.Sort(coll, callback);

6 Programmering i C# - Kapitel 7 6 Anrop till flera metoder Delegerarobjekt är egentligen samlingar av referenser till metoder Delegate.Combine konkatenerar objekt Operatorn + gör samma sak Ett anrop via delegeraren blir ett anrop till samtliga metoder Sista anropets returvärde blir delegeraranropets returvärde (därför ofta void )

7 Programmering i C# - Kapitel 7 7 Publicerare och prenumeranter Annan design: delegerarobjektet som private fält i en klass En public Add-metod ger objekt av andra klasser möjlighet att lägga till referens Kallas ibland Publicerare-Prenumerant … eller event! Se kodexempel i boken!

8 Programmering i C# - Kapitel 7 8 Anrop via notifierare Varför inte göra delegerarobjektet public ? Prenumeranter kan då påverka varandra! Lösning: event gör enbart += och -= synligt delegate void CallEveryone(); class Publisher { public event CallEveryone call = null; …

9 Programmering i C# - Kapitel 7 9 Parametrar Delegerartypen i viss mån standardiserad Klassbiblioteket erbjuder EventHandler returtyp: void parametrar: object och EventArgs Första parametern identifierar avsändaren EventArgs tänkt som basklass Används ofta som tom parameter


Ladda ner ppt "Programmering i C# 7. Delegerare och notifierare."

Liknande presentationer


Google-annonser