c delegate tutorial how instantiate
Овај водич објашњава како се користи делегат Ц # уз помоћ једноставних примера кода. Такође ћете научити о делегатима за вишеструко слање у Ц #:
Шта су делегати Ц #?
У Ц #, делегати су слични показивачима доступним у Ц ++. У основи је то променљива типа референце која садржи референцу на другу методу.
Даље, његова референца не може се променити током времена извођења. Доступан је унутар класе Систем.Делегате. Делегат се користи за управљање функцијом повратног позива или обрађивачем догађаја.
То је попут показивача на функцију и може се декларисати помоћу кључне речи делегат праћене потписом функције.
=> Овде прочитајте читаву серију обука за Ц #
Декларација делегата такође одређује метод на који се делегат може упутити, тј. То може бити референтна метода која има исти потпис као делегат.
Шта ћете научити:
Инстанцирање делегата у Ц #
Једном када је делегат декларисан, може се створити инстанца са новом кључном речи, а затим га треба повезати са методом. Баш као и метода, израз мора да проследи аргумент.
Позивање делегата
Делегат се може позвати баш као метода.
Пример:
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'); } }
Оутпут
Резултат горе наведеног програма биће:
Делегат који показује на метод
Објашњење
шта је окидање порта у односу на прослеђивање порта
У горе наведеном програму створили смо објекат делегата и усмерили га ка методи на коју треба да се позовемо. Затим смо користили инвоке () да бисмо позвали методу помоћу „делегат“.
Зашто требамо користити делегата Ц #?
Могли смо да зовемо метод директно из наше главне методе, али зашто заиста морамо да користимо делегата?
шта је интеграционо тестирање са примером
Делегат на једноставном језику значи представник за комуникацију између две групе. Чак иу програмском контексту, има сличну улогу. Користи се за повратне позиве.
Претпоставимо да имамо дуготрајну методу и морамо непрекидно да проверавамо напредак тог трчања. Да бисмо то урадили, користимо повратни позив помоћу делегата. То нам омогућава да пратимо дуготрајну методу.
На пример:
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
У горе наведеном програму користили смо делегата да бисмо добили повратни позив из методе „генериши број“ која генерише случајни цели број за дату итерацију. Ова итерација може бити огромна. Стога се овде делегат користи за повратни позив сваки пут када се у методи генерише случајни цели број.
Шта је делегат мултицаст-а у Ц #?
Делегат може указати на неколико различитих метода. Делегат који указује на неколико различитих метода познат је под називом мултицаст делегат. Знак „+“ (оператор) користи се за додавање функције делегату, а знак „-“ (оператор) користи се за уклањање било које постојеће функције која је придружена делегату.
Делегат вишеструког слања позива функције на које је указано и само исти тип функција може се комбиновати да би се формирао делегат за вишеструко слање. Ово се може користити за стварање листе метода на које треба позвати позивање једног делегата.
Погледајмо једноставан програм да бисмо ово разумели:
Програм
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
У горе наведеном програму прогласили смо делегата ИнтегерЦоунтер. Затим смо креирали две различите методе које изводе одређену операцију целобројне вредности. Затим смо у главној методи покренули делегат за обе дефинисане методе.
Тада смо прво користили делегатски објекат да покажемо на прву иницијализовану делегатску методу, а након тога користили смо знак „+“ за мултицаст делегирање и указивање на други метод. Тада ако проследимо целобројни параметар, обе методе ће примити исти параметар и извршиће се.
Закључак
Делегат је показивач на функцију. Метода која ће користити делегата мора имати исти параметар и тип повратка.
Делегат се може прогласити сличним функцији и такође се може позвати слично. Делегат мултицаст-а је када помоћу делегата указујемо на више метода, а плус „+“ оператор се користи за мултицаст.
=> Овде истражите целу серију водича за обуку за Ц #
Препоручено читање
- Отклањање грешака у селенијевим скриптама помоћу дневника (Водич за Лог4ј) - Водич за селениум # 26
- Ефикасни сценарији за скриптирање и решавање проблема са селенијем - Водич за селениј # 27
- Примена наше прве скрипте за ВебДривер - Водич бр. 10 за Селениум ВебДривер
- Целокупно подешавање и инсталирање ВебДривер-а помоћу програма Ецлипсе - Водич за селен бр. 9
- Увод у Селениум ВебДривер - Водич за селен бр. 8
- Стварање генеричких производа и тестова - Водич за селен бр. 22
- Како се рукује изузетком у СоапУИ Гроови скриптама - Водич за СоапУИ бр. 11
- Како даљински ажурирати статус извршења тест случаја помоћу селена - Туториал # 3