Delegat (programmering)

En  delegat är en klass som låter dig lagra en referens till en metod med en specifik signatur (ordning och typer av accepterade och returvärden) av en godtycklig klass. [1] [2] [3] [4] . Delegatinstanser innehåller referenser till specifika metoder för specifika klasser.

Delegater används i synnerhet för att definiera prototypen för en återuppringningsfunktion , till exempel i händelsemodellen .NET Framework .

Delegater i C#

Beskrivning

Från delegattypdeklarationen genererar kompilatorn en klass som härrör från System.MulticastDelegate. Så signaturen för en funktion som tar en delegat som argument kan se ut så här:

offentlig MyFunction ( Delegera en annanFunction );

En ytterligare funktion hos delegater är att de kan anropas asynkront med hjälp av BeginInvoke(). I det här fallet väljs en ledig trådpool och den angivna funktionen exekveras parallellt i dess sammanhang. Det är dock värt att notera att antalet trådar i poolen är begränsat (det finns 25 i den nuvarande .NET-implementeringen), och resten av samtalen väntar på sin tur.

Ett exempel på att deklarera och använda en delegat

använder System ; // Delegat declaration delegate void MyDelegate ( sträng a ); class DelegateExample { static void Func ( string param ) { Console . WriteLine ( "Funktion anropad med parameter {0}." , param ); } public static void Main () { // Instantiate MyDelegate delegate f = new MyDelegate ( Func ); // Ring funktionen f ( "hej" ); } }

Exemplet skriver ut på konsolen raden "En funktion anropades med parametern hej.".

Anteckningar

  1. " Delegater (A Guide to C#-programmering) Arkiverad 6 september 2011 på Wayback Machine -sidan i MSDN-biblioteket
  2. " Delegat - klass Arkiverad 6 september 2011 på Wayback Machine "-sidan i MSDN-biblioteket
  3. " MulticastDelegate - Klass arkiverad 24 december 2011 på Wayback Machine "-sidan i MSDN-biblioteket
  4. Delegater och evenemang Arkiverade 17 augusti 2011 på Wayback Machine // Alexey Dubovtsev, RSDN Magazine #4-2004, 2005-03-26.