c delegate tutorial how instantiate
Denna handledning förklarar hur man använder en C # -delegat med hjälp av enkla kodexempel. Du kommer också att lära dig om multicast-delegater i C #:
Vad är C # delegater?
I C # liknar delegater pekare tillgängliga i C ++. Det är i grunden en referens typvariabel som innehåller en hänvisning till en annan metod.
Vidare kan referensen inte ändras under körtiden. Den finns i System.Delegate-klassen. En delegat används för att hantera återuppringningsfunktionen eller en händelsehanterare.
Det är som en pekare till en funktion och kan deklareras med hjälp av nyckelorddelegaten följt av funktionens signatur.
=> Läs igenom hela C # Training Series här
Delegatdeklarationen avgör också vilken metod som kan hänvisas av delegaten, dvs. det kan vara en referensmetod som har samma signatur som en delegat.
Vad du kommer att lära dig:
Instantiering av delegaten i C #
När delegaten har förklarats kan den instantieras med det nya nyckelordet och sedan måste det associeras med metoden. Precis som en metod måste uttrycket passera ett argument.
Åberopar en delegat
En delegat kan åberopas precis som en metod.
Exempel:
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'); } }Produktion
Resultatet från ovanstående program kommer att vara:
Delegera som pekar på metod
Förklaring
vad man ska öppna swf-filer med
I ovanstående program har vi skapat ett objekt från delegaten och pekat på den metod som vi behöver åberopa. Sedan använde vi anropet () för att åberopa metoden med hjälp av 'delegera'.
Varför behöver vi använda C # delegat?
Vi kunde ha kallat metoden direkt från vår huvudmetod men varför behöver vi verkligen använda en delegat?
Delegat på enkelt språk betyder en representant för kommunikation mellan två grupper. Även i programmeringssammanhang har den en liknande roll. Den används för återuppringning.
Låt oss anta att vi har en långvarig metod och vi måste kontrollera att körningen fortskrider kontinuerligt. För att göra det använder vi återuppringning med en delegat. Detta gör att vi kan hålla reda på den långvariga metoden.
Till exempel:
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++; } } }Resultatet från ovanstående program kommer att vara:
Produktion
Det aktuella slumptalet är: 1559
Det aktuella slumptalet är: 6127
Nuvarande slumptal är: 6639
Det aktuella slumptalet är: 3963
Nuvarande slumptal är: 4479
Det aktuella slumptalet är: 6898
Det aktuella slumptalet är: 1390
Det aktuella slumptalet är: 6409
Det aktuella slumptalet är: 2629
Det aktuella slumptalet är: 5464
I ovanstående program använde vi en delegat för att få en återuppringning från 'genereraNummer' -metoden som genererar ett slumpmässigt heltal för en given iteration. Denna iteration kan vara enorm. Därför används delegaten här för att få ett samtal tillbaka varje gång ett slumpmässigt heltal genereras i metoden.
Vad är en multicast-delegat i C #?
En delegat kan peka på flera olika metoder. En delegat som pekar på flera olika metoder kallas en multicast-delegat. Ett “+” -tecken (operator) används för att lägga till en funktion till delegaten och “-“ -tecknet (operator) används för att ta bort alla befintliga funktioner som är kopplade till delegaten.
vad är den bästa gratis nedladdningsappen för musik för Android
En multicast-delegat kallar de funktioner som den pekas på och endast samma typ av funktioner kan kombineras för att bilda en multi-cast-delegat. Detta kan användas för att skapa en lista över metoder som behöver åberopas genom att ringa en enda delegat.
Låt oss titta på ett enkelt program för att förstå detta:
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(); } }Produktion
värdet av den första metoden 5
värdet av andra metoden 50
I ovanstående program förklarade vi en delegat IntegerCounter. Sedan skapade vi två olika metoder som utför en viss operation på helvärdet. Sedan i huvudmetoden initialiserade vi delegera för båda de definierade metoderna.
Sedan använde vi först delegatobjektet för att peka på den första initialiserade delegatmetoden och efter det använde vi “+” -tecknet för multicast-delegat och pekade på en annan metod. Om vi sedan skickar en heltalsparameter kommer båda metoderna att få samma parameter och kommer att köras.
Slutsats
En delegat är en pekare till en funktion. Metoden som ska använda delegaten måste ha samma parameter och returtyp.
Delegaten kan förklaras liknar en funktion och kan också åberopas på samma sätt. En multicast-delegat är när vi använder delegaten för att peka på flera metoder och en plus '+' -operatör används för att använda multicast.
=> Utforska hela serien av C # -träningsövningar här
Rekommenderad läsning
- Felsökning av selenskript med loggar (Log4j-handledning) - Selen-handledning # 26
- Effektiv skriptning av selen och felsökning av scenarier - Selen-handledning # 27
- Implementering av vårt första WebDriver Script - Selenium WebDriver Tutorial # 10
- WebDriver Hela installationen och installationen med Eclipse - Selen Tutorial # 9
- Introduktion till Selen WebDriver - Selen Tutorial # 8
- Skapa generika och testdräkter - Selen Tutorial # 22
- Hur man hanterar undantag i SoapUI Groovy Scripts - SoapUI-handledning # 11
- Hur man uppdaterar TestLink Test Exekveringsstatus på distans genom Selen - Handledning nr 3