delegate (Riferimenti per C#)

La dichiarazione di un tipo delegato è simile alla firma di un metodo.Dispone di un valore restituito e di una serie di parametri di qualsiasi tipo:

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

delegate è un tipo riferimento che può essere utilizzato per incapsulare un metodo denominato o anonimo.I delegati sono simili ai puntatori a funzioni di C++, sono tuttavia indipendenti dai tipi e protetti.Per le applicazioni dei delegati, vedere Delegati e Delegati generici.

Note

I delegati rappresentano la base degli eventi.

È possibile creare un'istanza di un delegato associandolo a un metodo denominato o anonimo.Per ulteriori informazioni, vedere Metodi denominati e Metodi anonimi.

È necessario creare un'istanza del delegato con un metodo o un'espressione lambda che dispone di un tipo restituito compatibile e di parametri di input.Per ulteriori informazioni sul grado di varianza consentito nella firma del metodo, vedere Varianza nei delegati (C# e Visual Basic).Per l'utilizzo con i metodi anonimi, è necessario dichiarare insieme il delegato e il codice da associare ad esso.In questa sezione vengono trattati entrambi i metodi per creare istanze dei delegati.

Esempio

// 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
}

Specifiche del linguaggio C#

Per ulteriori informazioni, vedere la Specifiche del linguaggio C#. La specifica del linguaggio è la fonte ufficiale per la sintassi e l'utilizzo di C#.

Vedere anche

Riferimenti

Parole chiave di C#

Tipi di riferimento (Riferimenti per C#)

Delegati (Guida per programmatori C#)

Eventi (Guida per programmatori C#)

Delegati con metodi denominati e anonimi (Guida per programmatori C#)

Metodi anonimi (Guida per programmatori C#)

Concetti

Guida per programmatori C#

Altre risorse

Riferimenti per C#