C# - Anonyme Methoden
Wir haben besprochen, dass Delegaten verwendet werden, um auf alle Methoden zu verweisen, die dieselbe Signatur wie die des Delegaten haben. Mit anderen Worten, Sie können eine Methode aufrufen, auf die von einem Delegaten verwiesen werden kann, indem Sie dieses Delegate-Objekt verwenden.
Anonyme Methoden bieten eine Technik zum Übergeben eines Codeblocks als Delegate-Parameter. Anonyme Methoden sind Methoden ohne Namen, nur der Körper.
Sie müssen den Rückgabetyp nicht in einer anonymen Methode angeben; es wird von der return-Anweisung innerhalb des Methodenkörpers abgeleitet.
Schreiben einer anonymen Methode
Anonyme Methoden werden bei der Erstellung der Delegatinstanz mit einem Delegaten deklariert Stichwort. Zum Beispiel
delegate void NumberChanger(int n); ... NumberChanger nc = delegate(int x) { Console.WriteLine("Anonymous Method: {0}", x); };
Der Codeblock Console.WriteLine("Anonymous Method:{0}", x); ist der Hauptteil der anonymen Methode.
Der Delegat könnte sowohl mit anonymen Methoden als auch mit benannten Methoden auf die gleiche Weise aufgerufen werden, d. h. durch Übergabe der Methodenparameter an das Delegate-Objekt.
Zum Beispiel
nc(10);
Beispiel
Das folgende Beispiel demonstriert das Konzept −
Live-Demousing 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) { //create delegate instances using anonymous method NumberChanger nc = delegate(int x) { Console.WriteLine("Anonymous Method: {0}", x); }; //calling the delegate using the anonymous method nc(10); //instantiating the delegate using the named methods nc = new NumberChanger(AddNum); //calling the delegate using the named methods nc(5); //instantiating the delegate using another named methods nc = new NumberChanger(MultNum); //calling the delegate using the named methods nc(2); Console.ReadKey(); } } }
Wenn der obige Code kompiliert und ausgeführt wird, erzeugt er das folgende Ergebnis −
Anonymous Method: 10 Named Method: 15 Named Method: 30
C Sprache