Partager via


delegate (référence C#)

La déclaration d'un type délégué est semblable à une signature de méthode. Elle présente une valeur de retour et n'importe quel nombre de paramètres de tout type :

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

Un delegate est un type référence qui peut être utilisé pour encapsuler une méthode nommée ou anonyme. Les délégués sont comparables aux pointeurs fonction en C++, mais ils offrent l'avantage d'être sécurisés et de garantir le type (sécurisés au niveau du type). Pour les applications de délégués, consultez Délégués et Délégués génériques.

Notes

Les délégués sont la base des Événements.

Un délégué peut être instancié en l'associant à une méthode nommée ou à une méthode anonyme. Pour plus d'informations, consultez Méthodes nommées et Méthodes anonymes.

Le délégué doit être instancié avec une méthode ou une expression lambda qui présente un type de retour compatible et des paramètres d'entrée. Pour plus d'informations sur le degré de variance qui est autorisé dans la signature de méthode, consultez Variance dans les délégués (C# et Visual Basic). Pour son utilisation avec des méthodes anonymes, le délégué et le code à lui associer sont déclarés ensemble. Les deux manières d'instancier un délégué sont présentées dans cette section.

Exemple

// 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: {0}", multByTwo);

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

        double square = ma2(5);
        Console.WriteLine("square: {0}", square);

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

        Console.WriteLine("cube: {0}", cube);
    }
    // Output: 
    // multByTwo: 9 
    // square: 25 
    // cube: 83.740234375
}

Spécification du langage C#

Pour plus d'informations, voir la Spécification du langage C#. La spécification du langage est la source de référence pour la syntaxe C# et son utilisation.

Voir aussi

Référence

Mots clés C#

Types référence (référence C#)

Délégués (guide de programmation C#)

Événements (Guide de programmation C#)

Délégués avec méthodes nommées et méthodes anonymes (Guide de programmation C#)

Méthodes anonymes (Guide de programmation C#)

Concepts

Guide de programmation C#

Autres ressources

Référence C#