Delen via


Gemachtigden (C#-programmeerhandleiding)

Een delegate is een type dat methodenreferenties met een specifieke parameterlijst en retourneertype vertegenwoordigt. Wanneer u een delegate instantieert, kunt u de delegate-instantie koppelen aan elke methode met een compatibele signatuur en retourtype. U kunt de methode aanroepen (of oproepen) via de delegate-instantie.

Gemachtigden worden gebruikt om methoden als argumenten door te geven aan andere methoden. Eventhandlers zijn in wezen methoden die u aanroept via gedelegeerden. Wanneer u een aangepaste methode maakt, kan een klasse zoals een Windows-besturingselement uw methode aanroepen wanneer een bepaalde gebeurtenis plaatsvindt.

In het volgende voorbeeld ziet u een gedelegeerdedeclaratie:

public delegate int PerformCalculation(int x, int y);

U kunt elke methode toewijzen vanuit elke toegankelijke klasse of struct die overeenkomt met het delegate-type aan de delegate. De methode kan statisch of een instantiemethode zijn. Dankzij de flexibiliteit kunt u programmatisch methode-aanroepen wijzigen of nieuwe code toevoegen aan bestaande klassen.

Notitie

In de context van overbelasting van methoden bevat de handtekening van een methode niet de retourwaarde. In de context van gemachtigden bevat de handtekening echter wel de retourwaarde. Met andere woorden, een methode moet een compatibel retourtype hebben als het retourtype dat door de gemachtigde is gedeclareerd.

De mogelijkheid om te verwijzen naar een methode als parameter maakt gemachtigden ideaal voor het definiëren van callback-methoden. U kunt een methode schrijven waarmee twee objecten in uw toepassing worden vergeleken. De methode kan vervolgens worden gebruikt in een delegaat voor een sorteeralgoritme. Omdat de vergelijkingscode losstaat van de bibliotheek, kan de sorteermethode algemener zijn.

Functie-aanwijzers vergelijkbare scenario's ondersteunen, waarbij u meer controle over de oproepconventie nodig hebt. De code die is gekoppeld aan een delegate, wordt aangeroepen met behulp van een virtuele methode die is toegevoegd aan een delegate type. Wanneer u met functiepointers werkt, kunt u verschillende conventies opgeven.

Kenmerken van gedelegeerden verkennen

Gemachtigden hebben de volgende kenmerken:

  • Gemachtigden staan toe dat methoden worden doorgegeven als parameters.
  • Gemachtigden kunnen worden gebruikt om callback-methoden te definiëren.
  • Gedelegeerden kunnen aan elkaar worden gekoppeld, zoals het aanroepen van meerdere methoden voor één gebeurtenis.
  • Methoden hoeven niet exact overeen te komen met het type gedelegeerde. Zie Variantie gebruiken in gemachtigdenvoor meer informatie.
  • Lambda-expressies zijn een beknoptere manier om inlinecodeblokken te schrijven. Lambda-expressies (in bepaalde contexten) worden gecompileerd om typen te delegeren. Zie Lambda-expressiesvoor meer informatie over lambda-expressies.

Zie de volgende artikelen voor meer informatie over gemachtigden:

De C#-taalspecificatie openen

De taalspecificatie is de definitieve bron voor de C#-syntaxis en het gebruik. Zie Gemachtigden in de C#-taalspecificatievoor meer informatie.