Delegeret (programmering)

En  delegat er en klasse, der giver dig mulighed for at gemme en reference til en metode med en specifik signatur (rækkefølge og typer af accepterede og returværdier) af en vilkårlig klasse. [1] [2] [3] [4] . Delegerede forekomster indeholder referencer til specifikke metoder for specifikke klasser.

Delegerede bruges især til at definere prototypen for en tilbagekaldsfunktion , såsom i .NET Framework- hændelsesmodellen .

Delegerede i C#

Beskrivelse

Fra delegattypeerklæringen genererer compileren en klasse , der stammer fra System.MulticastDelegate. Så signaturen af ​​en funktion , der tager en delegeret som argument, kan se sådan ud:

offentlig MyFunction ( Deleger en andenFunktion );

En yderligere funktion ved delegerede er, at de kan kaldes asynkront ved hjælp af BeginInvoke(). I dette tilfælde vælges en fri trådpulje, og den angivne funktion udføres parallelt i dens kontekst. Det er dog værd at bemærke, at antallet af tråde i puljen er begrænset (der er 25 i den nuværende .NET-implementering), og resten af ​​opkaldene venter på deres tur.

Et eksempel på at erklære og bruge en delegeret

bruger System ; // Delegeret erklæring delegate void MyDelegate ( string a ); klasse DelegateExample { static void Func ( string param ) { Console . WriteLine ( "Funktion kaldet med parameter {0}." , param ); } public static void Main () { // Instantiate MyDelegate delegate f = new MyDelegate ( Func ); // Kald funktion f ( "hej" ); } }

Eksemplet udskriver på konsollen linjen "En funktion blev kaldt med parameteren hej.".

Noter

  1. " Delegates (A Guide to C# Programming) Arkiveret 6. september 2011 på Wayback Machine "-siden i MSDN-biblioteket
  2. " Delegat - klasse Arkiveret 6. september 2011 på Wayback Machine "-siden i MSDN-biblioteket
  3. " MulticastDelegate - Klasse arkiveret 24. december 2011 på Wayback Machine "-siden i MSDN-biblioteket
  4. Delegerede og begivenheder Arkiveret 17. august 2011 på Wayback Machine // Alexey Dubovtsev, RSDN Magazine #4-2004, 26/03/2005.