Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Guida al C# - Delegati

Guida al C#

Capitolo 20° - Delegati

<< Precedente Prossimo >>

Programmando, spesso ci si possiamo trovare in alcune situazioni dove è necessario eseguire una particolare azione.
Ma non conosciamo in anticipo quali metodi o oggetti che saranno coinvolti dalla stessa.

Ad esempio,
Anche un normalissimo controllo su un WinForm,
Potremmo trovarci in una condizione di notificare un oggetto, ma non conoscerebbe su quale oggetto farlo.

Ed in questo caso, dovremo collegare il controllo ad un oggetto specifico, quindi conviene collegarlo ad un delegato
e lasciare quest'ultimo alla gestione dei metodi o degli oggetti coinvolti. 

inanzi tutto, come si dichiara un delegato?

 

public delegate void Test(int N);

 

 

 

Questa dichiarazione definisce un delegato denominato Test che incapsulerà ogni metodo con un parametro di tipo string che restituisce un void.

Dopo aver dichiarato il delegato Test, possiamo istanziarlo per incapsulare un metodo che abbia una firma signature, corrispondente al delegato.

All'inizio sarà un pò complicato capire il corretto funzionamento di un delegato.
Ma man mano, nei prossimi capitoli impareremo a sfruttarlo a pieno.

ecco un semplice esempio di tutto quello che abbiamo spiegato sin'ora. 

 

 

   class Program
    {
        public delegate void Delegato(string messaggio);
    

        static void Main(string[] args)
        {
            Delegato dt = new Delegato(Messaggio);
            dt("ciao delegato!");
       }
        static void Messaggio(string msg) { Console.WriteLine(msg); Console.ReadKey(); } 
  
 
    }

 

in parole povere...

Abbiamo instanziato un Delegato, che incapsula il void Messaggio.
con tutti i suoi membri, funzioni e attributi. 

 


<< Precedente Prossimo >>
A proposito dell'autore

VB.NET, C#, C++, PHP, MySQL, Javascript , LUA,Infarinatura di Python e Ruby, Grafica Vettoriale (Esperto di CorelDraw) DirectX 9 e XNA Game Studio, Silverlight, jquery, Autoit e Android. Esperto in Unity e Buona conoscenza di Blender. Esperto C# UI Designer Ottima conoscenza sulle tecnologie PBR. Assembly? Sto imparando...