c delegate tutorial how instantiate
Цей посібник пояснює, як використовувати делегата C # за допомогою простих прикладів коду. Ви також дізнаєтесь про делегатів багатоадресної розсилки в C #:
Що таке делегати C #?
У C # делегати подібні до покажчиків, доступних у C ++. В основному це змінна типу посилання, яка містить посилання на інший метод.
Крім того, його посилання не може бути змінено під час роботи. Він доступний у класі System.Delegate. Делегат використовується для обробки функції зворотного виклику або обробника подій.
Це як вказівник на функцію і може бути оголошено за допомогою делегата ключового слова з подальшим підписом функції.
=> Прочитайте цілу серію навчальних програм C # тут
Оголошення делегата також визначає метод, на який може посилатися делегат, тобто це може бути еталонний метод, який має той самий підпис, що і делегат.
Що ви дізнаєтесь:
Запрошення делегата в C #
Після того, як делегат оголошено, його можна створити за допомогою нового ключового слова, а потім його потрібно пов'язати з методом. Як і метод, вираз повинен передавати аргумент.
Виклик делегата
Делегат можна викликати так само, як метод.
Приклад:
class Program { public delegate void methodDelegate(); public static void Main(string() args) { methodDelegate md = new methodDelegate(method); md.Invoke(); } public static void method() { Console.WriteLine('Delegate pointing to method'); } }
Вихідні дані
Результатом роботи вищезазначеної програми буде:
Делегат, вказуючи на метод
Пояснення
завантажити всі відео зі списку відтворення YouTube
У вищезазначеній програмі ми створили об'єкт делегата і спрямували його до методу, який нам потрібно викликати. Потім ми використовували invoke () для виклику методу за допомогою ‘delegate’.
Чому нам потрібно використовувати делегат C #?
Ми могли б викликати метод безпосередньо з нашого основного методу, але чому нам справді потрібно використовувати делегат?
Делегат простою мовою означає представника для спілкування між двома групами. Навіть у контексті програмування, він виконує подібну роль. Він використовується для зворотних викликів.
Припустимо, що у нас є тривалий метод, і нам потрібно постійно перевіряти прогрес. Для цього ми використовуємо зворотний виклик за допомогою делегата. Це дозволяє нам відстежувати тривалий метод.
Наприклад:
public class Program { One on = new One(); public static void Main(string() args) { One.generateNumbers(callDelegate); Console.ReadLine(); } public static void callDelegate(int j) { Console.WriteLine('The current random number is :' + j); } } public class One { public delegate void callingDelegate(int j); public static void generateNumbers(callingDelegate cd) { Random rn = new Random(); int i = 0; int j = 0; while (i <10) { j = rn.Next(9999); cd(j); i++; } } }
Результатом роботи вищезазначеної програми буде:
Вихідні дані
Поточне випадкове число: 1559
Поточне випадкове число: 6127
Поточне випадкове число: 6639
Поточне випадкове число: 3963
Поточне випадкове число: 4479
Поточне випадкове число: 6898
Поточне випадкове число: 1390
Поточне випадкове число: 6409
Поточне випадкове число: 2629
Поточне випадкове число: 5464
У наведеній вище програмі ми використовували делегата, щоб отримати зворотний виклик із методу “generateNumber”, який генерує випадкове ціле число для даної ітерації. Ця ітерація може бути величезною. Отже, делегат тут використовується для отримання зворотного виклику кожного разу, коли в методі генерується випадкове ціле число.
Що таке делегат багатоадресної розсилки в C #?
Делегат може вказати на кілька різних методів. Делегат, який вказує на кілька різних методів, відомий як делегат багатоадресної передачі. Знак '+' (оператор) використовується для додавання функції до делегата, а знак '-' (оператор) використовується для видалення будь-якої існуючої функції, приєднаної до делегата.
Делегат багатоадресної передачі викликає функції, на які він вказує, і лише однотипні функції можуть бути об'єднані, щоб сформувати делегат із кількома трансляціями. Це може бути використано для створення списку методів, які потрібно викликати, викликаючи одного делегата.
Давайте розглянемо просту програму, щоб зрозуміти це:
Програма
public class Program { delegate void IntegerCounter(int n); public static void method_A(int a) { a = a + 5; Console.WriteLine('the value of first method {0}', a); } public static void method_B(int b) { b = b * 5; Console.WriteLine('the value of second method {0}', b); } public static void Main(string() args) { //creating instance of the delegate IntegerCounter x; IntegerCounter y = new IntegerCounter(method_A); IntegerCounter z = new IntegerCounter(method_B); x = y; x += z; x(10); Console.ReadLine(); } }
Вихідні дані
значення першого способу 5
значення другого методу 50
У наведеній вище програмі ми оголосили делегатом IntegerCounter. Потім ми створили два різні методи, які виконують певну операцію над цілим значенням. Тоді в основному методі ми ініціалізували делегат для обох визначених методів.
код сортування міхура c ++
Потім ми спочатку використовували об'єкт делегата, щоб вказати на перший ініціалізований метод делегування, а після цього, ми використали знак '+' для багатоадресного делегування та вказівки на інший метод. Тоді, якщо ми передамо цілочисельний параметр, обидва методи отримають однаковий параметр і будуть виконані.
Висновок
Делегат - це вказівник на функцію. Метод, який збирається використовувати делегат, повинен мати однаковий параметр і тип повернення.
Делегат може бути оголошений подібним до функції, а також може бути викликаний аналогічним чином. Делегат багатоадресної передачі - це коли ми використовуємо делегата для вказівки на кілька методів, а для використання багатоадресної передачі використовується оператор плюс “+”.
=> Ознайомтесь із цілою серією навчальних посібників C # тут
Рекомендована література
- Налагодження сценаріїв селену за допомогою журналів (Підручник Log4j) - Підручник селену # 26
- Ефективні сценарії сценаріїв та усунення несправностей селену - Підручник селену No27
- Впровадження нашого першого сценарію WebDriver - Підручник № 10 для Selenium WebDriver
- Повне налаштування та встановлення WebDriver за допомогою Eclipse - Підручник селену № 9
- Вступ до Selenium WebDriver - Підручник з селену №8
- Створення дженериків та тестів - Підручник з селену №22
- Як обробляти винятки у сценаріях Groovy SoapUI - Підручник No11 з SoapUI
- Як дистанційно оновити стан виконання тест-кейсу TestLink за допомогою селену - Підручник №3