Il presente articolo è stato tradotto manualmente. Passare il puntatore sulle frasi nell'articolo per visualizzare il testo originale.
Traduzione
Originale
Questo argomento non è stato ancora valutato - Valuta questo argomento

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.

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.


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


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

Il documento è risultato utile?
(1500 caratteri rimanenti)
Contenuto della community Aggiungi
Microsoft sta conducendo un sondaggio in linea per comprendere l'opinione degli utenti in merito al sito Web di MSDN. Se si sceglie di partecipare, quando si lascia il sito Web di MSDN verrà visualizzato il sondaggio in linea.

Si desidera partecipare?