c delegate tutorial how instantiate
Tento výukový program vysvětluje, jak používat delegáta C # pomocí příkladů jednoduchého kódu. Dozvíte se také o delegátech vícesměrového vysílání v jazyce C #:
Co jsou delegáti C #?
V jazyce C # jsou delegáti podobní ukazatelům dostupným v C ++. Je to v podstatě proměnná typu odkazu, která obsahuje odkaz na jinou metodu.
Dále nelze jeho referenční hodnotu během běhu změnit. Je k dispozici uvnitř třídy System.Delegate. Delegát se používá ke zpracování funkce zpětného volání nebo obslužné rutiny události.
Je to jako ukazatel na funkci a lze jej deklarovat pomocí delegáta klíčového slova následovaného podpisem funkce.
=> Přečtěte si celou C # sérii školení zde
Deklarace delegáta také určuje metodu, kterou může delegát odkázat, tj. Může to být referenční metoda, která má stejný podpis jako delegát.
Co se naučíte:
Vytváření instancí delegáta v C #
Jakmile je delegát deklarován, lze jej vytvořit instancí s novým klíčovým slovem a poté je třeba ho přidružit k metodě. Stejně jako metoda musí výraz předat argument.
Vyvolání delegáta
Delegáta lze vyvolat stejně jako metodu.
Příklad:
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'); } }
Výstup
Výstupem výše uvedeného programu bude:
Delegát ukazuje na metodu
Vysvětlení
Jak vytvořit řadu objektů
Ve výše uvedeném programu jsme vytvořili objekt delegáta a nasměrovali jej na metodu, kterou musíme vyvolat. Potom jsme pomocí invoke () vyvolali metodu pomocí ‚delegáta '.
Proč musíme používat delegáta C #?
Mohli jsme metodu volat přímo z naší hlavní metody, ale proč opravdu potřebujeme použít delegáta?
Delegát v jednoduchém jazyce znamená zástupce pro komunikaci mezi dvěma skupinami. I v kontextu programování má podobnou roli. Používá se pro zpětná volání.
Dot Net Dotazy a odpovědi pro zkušené
Předpokládejme, že máme dlouhodobou metodu a musíme průběh procesu průběžně kontrolovat. K tomu používáme zpětné volání pomocí delegáta. To nám umožňuje sledovat dlouhodobou metodu.
Například:
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++; } } }
Výstupem výše uvedeného programu bude:
Výstup
Aktuální náhodné číslo je: 1559
Aktuální náhodné číslo je: 6127
Aktuální náhodné číslo je: 6639
Aktuální náhodné číslo je: 3963
Aktuální náhodné číslo je: 4479
Aktuální náhodné číslo je: 6898
Aktuální náhodné číslo je: 1390
Aktuální náhodné číslo je: 6409
Aktuální náhodné číslo je: 2629
Aktuální náhodné číslo je: 5464
Ve výše uvedeném programu jsme použili delegáta k získání zpětného volání z metody „generateNumber“, která generuje náhodné celé číslo pro danou iteraci. Tato iterace může být obrovská. Proto se zde delegát používá k získání zpětného volání pokaždé, když je v metodě generováno náhodné celé číslo.
Co je delegát vícesměrového vysílání v jazyce C #?
Delegát může poukázat na několik různých metod. Delegát, který odkazuje na několik různých metod, se nazývá delegát vícesměrového vysílání. Znak „+“ (operátor) se používá k přidání funkce k delegátovi a znak „-“ (operátor) se používá k odstranění jakékoli existující funkce připojené k delegátovi.
Delegát vícesměrového vysílání volá funkce, na které je poukázáno, a lze kombinovat pouze stejný typ funkcí a vytvořit delegáta s více obsazeními. To lze použít k vytvoření seznamu metod, které je třeba vyvolat voláním jednoho delegáta.
Podívejme se na jednoduchý program, jak tomu porozumět:
Program
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(); } }
Výstup
hodnota první metody 5
hodnota druhé metody 50
Ve výše uvedeném programu jsme deklarovali delegáta IntegerCounter. Poté jsme vytvořili dvě různé metody, které provádějí určitou operaci s celočíselnou hodnotou. Pak jsme v hlavní metodě inicializovali delegáta pro obě definované metody.
Poté jsme nejprve použili objekt delegáta k nasměrování na první inicializovanou metodu delegáta a poté jsme pomocí znaménka „+“ delegovali vícesměrové vysílání a ukázali na jinou metodu. Pokud tedy předáme celočíselný parametr, obě metody obdrží stejný parametr a budou provedeny.
Závěr
Delegát je ukazatel na funkci. Metoda, která bude používat delegáta, musí mít stejný parametr a návratový typ.
Delegát může být deklarován podobně jako funkce a lze jej také vyvolat podobně. Delegát vícesměrového vysílání je, když pomocí delegáta ukážeme na více metod a pro použití vícesměrového vysílání se použije operátor plus „+“.
=> Prozkoumejte celou řadu výcvikových kurzů C # zde
Doporučené čtení
- Ladění selenových skriptů pomocí protokolů (výuka Log4j) - výuka selenu č. 26
- Efektivní scénáře selenu a řešení potíží - Scénář selenu č. 27
- Implementace našeho prvního skriptu WebDriver - výuka selenu WebDriver # 10
- Úplné nastavení a instalace WebDriveru s Eclipse - výuka selenu č. 9
- Úvod do selenu WebDriver - Selenium Tutorial # 8
- Vytváření generik a testů - výuka selenu č. 22
- Jak zpracovat výjimku v SoapUI Groovy skriptech - SoapUI Tutorial # 11
- Jak vzdáleně aktualizovat stav spuštění testovacího případu TestLink prostřednictvím selenu - výuka # 3