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
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#)