Тема: «Делегати у С#»
Утворення та використання делегатів Багатоадресні делегати
Делегати подібні до вказівників на функції. Їх можна використати для виклику різноманітних функцій з однаковою сигнатурою під час виконання програми. Сигнатура функції – це список типів параметрів і результату. Делегат оголошується подібним чином: Delefate тип_результату ім'я([параметри])
Public class Class. A { Public static double M 1 (int i) { …; } Public double M 2 (int i) { …; } } Public delegate double Delegate. M (int i); // делегат для цих функцій Приклад використання: Delegate. M delegate. M = new Delegate. M(Class. A. M 1); double m 1 = delegate. M(10); Class. A A = new Class. A(); delegate. M = new Delegate. M(A. M 2); Double m 2 = delegate. M(10);
За допомогою делегата, можна викликати декілька методів. При цьому на делегата та методи накладається додаткове обмеження: І методи, і делегат повинні повертати тип void.
Public delegate void Delegate. M (int i); Public class Class. A { Public static void M 1 (int i) { …; } Public void M 2 (int i) { …; } } //деякий код Class. A A = new Class. A(); Delegate. M delegate. M = new Delegate. M(Class. A. M 1); delegate. M += new Delegate. M(A. M 2); delegate. M(10);