C# Anonymous Methods: Delegate Gebruik Vereenvoudigen
Wat zijn Anonymous Methods?
We bespraken dat delegates gebruikt worden om methoden te refereren die dezelfde handtekening hebben als de delegate. Met andere woorden: je kunt een methode die door een delegate gerefereerd kan worden, aanroepen via dat delegate-object.
Anonymous methods bieden een techniek om een codeblok als delegate-parameter door te geven. Anonymous methods zijn methoden zonder naam, alleen de body.
Je hoeft het retouurtpe niet op te geven in een anonymous method; dit wordt afgeleid van de return-statement binnen de methodebody.
Een Anonymous Method Schrijven
Anonymous methods worden gedeclareerd bij het aanmaken van de delegate-instantie, met het delegate sleutelwoord. Bijvoorbeeld:
delegate void NumberChanger(int n);
...
NumberChanger nc = delegate(int x) {
Console.WriteLine("Anonymous Method: {0}", x);
};
Het codeblok Console.WriteLine("Anonymous Method: {0}", x); is de body van de anonymous method.
De delegate kan zowel met anonymous methods als met genamede methoden worden aangeroepen, op dezelfde manier: door de methodeparameters aan het delegate-object door te geven.
Bijvoorbeeld:
nc(10);
Voorbeeld
Het volgende voorbeeld demonstreert het concept:
using System;
delegate void NumberChanger(int n);
namespace DelegateAppl {
class TestDelegate {
static int num = 10;
public static void AddNum(int p) {
num += p;
Console.WriteLine("Named Method: {0}", num);
}
public static void MultNum(int q) {
num *= q;
Console.WriteLine("Named Method: {0}", num);
}
public static int getNum() { return num; }
static void Main(string[] args) {
// Delegate instantie aanmaken met anonymous method
NumberChanger nc = delegate(int x) {
Console.WriteLine("Anonymous Method: {0}", x);
};
// Delegate aanroepen met anonymous method
nc(10);
// Delegate instantiëren met named method
nc = new NumberChanger(AddNum);
// Delegate aanroepen met named method
nc(5);
// Delegate instantiëren met andere named method
nc = new NumberChanger(MultNum);
// Delegate aanroepen met named method
nc(2);
Console.ReadKey();
}
}
}
Wanneer de bovenstaande code wordt gecompileerd en uitgevoerd, produceert dit het volgende resultaat:
Anonymous Method: 10 Named Method: 15 Named Method: 30
C Taal
- Precisie bewerking: Bewezen technieken voor het bereiken van werkstucknauwkeurigheid
- EPA Methode 21: Uitgebreid Lekdetectie & Reparatieprotocol
- C# Abstract Classes & Methods: Een Praktische Gids
- C# Partial Classes en Methods: Een Praktische Gids
- C# Sealed Classes en Methods: Wanneer en Hoe Te Gebruiken
- Method overloading in C#: concepten, voorbeelden en best practices
- C# Methodes: Definiëren, Aanroepen en Gebruiken van Functies
- C# Delegates Begrijpen: Handleiding voor Functiereferenties en Events
- Python Lambda Functies: Een praktische gids voor anonieme functies
- Java anonieme inner classes meesteren: definitie, syntax en praktische voorbeelden
- Java 8 Default Methods: Interfaces verbeteren & backward compatibility