Il presente articolo è stato tradotto manualmente. Passare il puntatore sulle frasi nell'articolo per visualizzare il testo originale. |
Traduzione
Originale
|
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#.