Пример #1
0
        static void Main(string[] args)
        {
            //instanzio la classe contenente i metodi con la concretizzazione del delegate
            ConcreteDelegate cd = new ConcreteDelegate();

            //visto l'uso dei generici, è ora necessario specificare il tipo di riferimento
            ConfrontoDelegate <double> confrDelegDouble = cd.MaggioreDi;
            ConfrontoDelegate <int>    confrDelegInt    = cd.MinoreDi;

            confrDelegDouble(10.2, 4.2);
            confrDelegInt(10, 4);

            //in questo caso è bene che i metodi concretizzati del delegate ritornino sempre void, onde evitare che si peschi solo l'utlimo di tutti i controlli eseguiti in sequenza
            //va ricordato che una qualunque eccezione, interromperà il multicast

            Console.WriteLine();
            Console.WriteLine("Premi invio per terminare...");
            Console.ReadLine();
        }
Пример #2
0
        static void Main(string[] args)
        {
            //instanzio la classe contenente i metodi con la concretizzazione del delegate
            ConcreteDelegate cd = new ConcreteDelegate();

            //assegno al delegate uno dei metodi della classe concreta
            ConfrontoDelegate confrDeleg = cd.MaggioreDi;

            Console.WriteLine("10 è maggiore di 3: " + confrDeleg(10, 3));

            //sostituisco l'assegnazione con un'altro dei metodi della classe concreta
            confrDeleg = cd.MinoreDi;
            Console.WriteLine("10 è minore di 3: " + confrDeleg(10, 3));

            confrDeleg = cd.UgualeA;
            Console.WriteLine("10 è uguale a 3: " + confrDeleg(10, 3));

            Console.WriteLine();
            Console.WriteLine("Premi invio per terminare...");
            Console.ReadLine();
        }
Пример #3
0
        static void Main(string[] args)
        {
            //instanzio la classe contenente i metodi con la concretizzazione del delegate
            ConcreteDelegate cd = new ConcreteDelegate();

            //assegno al delegate uno dei metodi della classe concreta
            ConfrontoDelegate confrDeleg = cd.MaggioreDi;

            //aggiungo il secondo ed il tezo metodo, in questo modo il delegate ha più metodi ai quali puntare
            //l'uso del multicast permette di assegnare ad una sola istanza del delegate l'esecuzione di più metodi
            confrDeleg += cd.MinoreDi;
            confrDeleg += cd.UgualeA;

            //ora il delegate seguirà tutti e tre i controlli in sequenza
            confrDeleg(10, 4);

            //in questo caso è bene che i metodi concretizzati del delegate ritornino sempre void, onde evitare che si peschi solo l'utlimo di tutti i controlli eseguiti in sequenza
            //va ricordato che una qualunque eccezione, interromperà il multicast

            Console.WriteLine();
            Console.WriteLine("Premi invio per terminare...");
            Console.ReadLine();
        }