(0) exportieren Drucken
Alle erweitern
Dieser Artikel wurde manuell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen.
Übersetzung
Original
1 von 1 fanden dies hilfreich - Dieses Thema bewerten.

Delegat (C#-Referenz)

Die Deklaration eines Delegattyps ist einer Methodensignatur ähnlich. Sie weist einen Rückgabewert und eine beliebige Anzahl Parameter eines beliebigen Typs auf:

public delegate void TestDelegate(string message);
public delegate int TestDelegate(MyType m, long num);

delegate ist ein Referenztyp, mit dem eine benannte oder anonyme Methode gekapselt werden kann. Delegaten entsprechen den Funktionszeigern in C++, sie sind jedoch typsicher und geschützt. Anwendungsmöglichkeiten von Delegaten finden Sie unter Delegaten und Generische Delegaten.

Delegaten bilden die Grundlage für Ereignisse.

Ein Delegat kann instanziiert werden, indem er entweder einer benannten oder einer anonymen Methode zugeordnet wird. Weitere Informationen finden Sie unter Benannte Methoden und Anonyme Methoden.

Der Delegat muss mit einer Methode oder einem Lambda-Ausdruck instanziiert werden, der einen kompatiblen Rückgabewert und kompatible Eingabeparameter aufweist. Weitere Informationen zum Grad der zulässigen Varianz bei der Methodensignatur finden Sie unter Varianz in Delegaten (C# und Visual Basic). Zur Verwendung mit anonymen Methoden werden der Delegat und der Code, dem er zugeordnet werden soll, zusammen deklariert. Beide Methoden zur Instanziierung von Delegaten werden in diesem Abschnitt erläutert.


// Declare delegate -- defines required signature:
delegate double MathAction(double num);

class DelegateTest
{
    // Regular method that matches signature:
    static double Double(double input)
    {
        return input * 2;
    }

    static void Main()
    {
        // Instantiate delegate with named method:
        MathAction ma = Double;

        // Invoke delegate ma:
        double multByTwo = ma(4.5);
        Console.WriteLine(multByTwo);

        // Instantiate delegate with anonymous method:
        MathAction ma2 = delegate(double input)
        {
            return input * input;
        };

        double square = ma2(5);
        Console.WriteLine(square);

        // Instantiate delegate with lambda expression
        MathAction ma3 = s => s * s * s;
        double cube = ma3(4.375);

        Console.WriteLine(cube);
    }
}


Weitere Informationen finden Sie in der C#-Sprachspezifikation. Die Sprachspezifikation ist die verbindliche Quelle für die Syntax und Verwendung von C#.

Fanden Sie dies hilfreich?
(1500 verbleibende Zeichen)
Vielen Dank für Ihr Feedback.

Community-Beiträge

HINZUFÜGEN
Microsoft führt eine Onlineumfrage durch, um Ihre Meinung zur MSDN-Website zu erfahren. Wenn Sie sich zur Teilnahme entscheiden, wird Ihnen die Onlineumfrage angezeigt, sobald Sie die MSDN-Website verlassen.

Möchten Sie an der Umfrage teilnehmen?
Anzeigen:
© 2014 Microsoft. Alle Rechte vorbehalten.