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 .
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.
Exemplet skriver ut på konsolen raden "En funktion anropades med parametern hej.".