English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

C#-Anonyme Methode

Wie der Name schon sagt, sind anonyme Methoden Methoden ohne Namen. Anonyme Methoden in C# können mit dem Delegate-(delegate)-Schlüsselwort definiert und einer Delegate-(delegate)-typisierten Variable zugewiesen werden.

In anonymen Methoden müssen Sie keine Rückgabetyp angeben, er wird aus dem Methodenkörper über die return-Anweisung abgeleitet.

public delegate void Print(int value);
static void Main(string[] args)
{
    Print print = delegate(int val) { 
        Console.WriteLine("Innerhalb der anonymen Methode. Wert: {0}", val); 
    };
    print(100);
}
Ausgabe:
Innerhalb der anonymen Methode. Wert:100

Anonyme Methoden können Variablen zugreifen, die in externen Funktionen definiert sind

Anonyme Methoden können Variablen zugreifen, die in externen Funktionen definiert sind

public delegate void Print(int value);
static void Main(string[] args)
{
    int i = 10;
    
    Print prnt = delegate(int val) {
        val +=
        Console.WriteLine("Anonyme Methode: {0}", val); 
    };
    prnt(100);
}
Ausgabe:
Anonyme Methode:110

Anonyme Methoden als Parameter

Es kann auch eine anonyme Methode an eine Methode übergeben werden, die Delegierte als Parameter akzeptiert.

Im folgenden Beispiel verwendet PrintHelperMethod() den ersten Parameter des Print-Delegierten:

public delegate void Print(int value);
class Program
{
    public static void PrintHelperMethod(Print printDel, int val)
    { 
        val += 10;
        printDel(val);
    }
    static void Main(string[] args)
    {
        PrintHelperMethod(delegate(int val) { Console.WriteLine("Anonyme Methode: {0}", val); }, 100);
    }
}
Ausgabe:
Anonyme Methode:110

Anonyme Methoden können als Ereignisbehandler verwendet werden

saveButton.Click += delegate(Object o, EventArgs e)
{ 
    System.Windows.Forms.MessageBox.Show("Save Successfully!"); 
};

C#3C# 7.0 führte Lambda-Ausdrücke ein, die wie anonyme Methoden funktionieren.

Beschränkungen der anonymen Methoden

  • Es kann keine Sprunganweisungen wie goto, break oder continue enthalten.

  • Es kann keine externen Methodenparameter mit ref oder out zugreifen.

  • Es kann keine unsicheren Codes besitzen oder auf sie zugreifen.

  • Es kann nicht auf der linken Seite des is-Operators verwendet werden.

 Zu beachtende Punkte

  1. Anonyme Methoden können mit dem Schlüsselwort delegate definiert werden.

  2. Anonyme Methoden müssen einem Delegaten zugewiesen werden.

  3. Anonyme Methoden können externe Variablen oder Funktionen zugreifen.

  4. Anonyme Methoden können als Parameter übergeben werden.

  5. Anonyme Methoden können als Ereignisbehandler verwendet werden.