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'); } }
Изход
Резултатът от горната програма ще бъде:
Делегат, сочещ към метод
Обяснение
основни въпроси и отговори за интервю за техническа поддръжка
В горната програма създадохме обект на делегата и го насочихме към метода, който трябва да извикаме. След това използвахме invoke (), за да извикаме метода, използвайки ‘делегат’.
Защо трябва да използваме 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. След това създадохме два различни метода, които извършват определена операция върху целочислената стойност. След това в основния метод инициализирахме делегат и за двата дефинирани метода.
След това първо използвахме обекта на делегат, за да насочим към първия инициализиран метод на делегат, а след това използвахме знака „+“ за мултикаст делегиране и насочване към друг метод. Тогава, ако предадем цяло число параметър, и двата метода ще получат един и същ параметър и ще бъдат изпълнени.
топ безплатен YouTube към mp3 конвертор
Заключение
Делегат е указател към функция. Методът, който ще използва делегата, трябва да има същия параметър и тип връщане.
Делегатът може да бъде обявен за подобен на функция и може също да бъде извикан по подобен начин. Делегат на мултикаст е, когато използваме делегата, за да сочи към множество методи, а операторът плюс „+“ се използва за използване на мултикаст.
=> Разгледайте цялата серия C # учебни уроци тук
Препоръчително четене
- Отстраняване на грешки в скриптове за селен с регистрационни файлове (Урок за Log4j) - Урок за селен # 26
- Ефективни сценарии за скриптове и отстраняване на неизправности в селен - Урок № 27 за селен
- Внедряване на нашия първи скрипт за WebDriver - Урок № 10 за Selenium WebDriver
- Цялата настройка и инсталиране на WebDriver с Eclipse - Урок № 9 за селен
- Въведение в Selenium WebDriver - Урок № 8 за селен
- Създаване на генерични лекарства и тестове - Урок №22 за селен
- Как да се справям с изключенията в скриптове на SoapUI Groovy - Урок № 11 за SoapUI
- Как да актуализирате дистанционно състоянието на изпълнението на TestLink Test Case чрез селен - Урок # 3