using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Délégations_1
{
     class Program
    {
        private static void f()
        {
            Console.WriteLine("Fonction f");
        }

        private static void g()
        {
            Console.WriteLine("Fonction g");
        }

        private delegate void T(); // ceci est une définition de type

        private static void Main(string[] args)
        {
            T de = new T(f); // déclaration de variable. de fait référence à f
            de(); // exécute f
            Console.WriteLine("-----------------");
            de = new T(g); // de fait maintenant référence à g
            de(); // exécute g
            Console.WriteLine("-----------------");
            de += f;
            de();
            Console.ReadKey();
        }
    }
}
