示例#1
0
        static void Main(string[] args)
        {
            MijnGenericDelegate <int> del_gen = Min;//new MijnGenericDelegate<int>(Min);
            int minWaarde = del_gen(5, 6);

            Console.WriteLine("Minimum waarde = " + minWaarde);
            del_gen = Max;
            Console.WriteLine("Max Waarde is= " + del_gen(5, 6));
            //del_gen = Deling; verkeerde type (T is geen int bij del_gen)
            MijnGenericDelegate <double> del_gen2 = Deling;

            Console.WriteLine("Deling van 10 door 3 = " + del_gen2(10.0, 3.0));
            //del_gen = new MijnGenericDelegate<double>(Deling); werkt niet, want del_gen oorspronkelijk als MijnGenericDelegate<int>

            Console.ReadKey();
        }
        static void Main(string[] args)
        {
            MijnGenericDelegate <int> del_int = IsGelijk;

            Console.WriteLine($"IsGelijk(5,5)= " + del_int(5, 5));
            Console.WriteLine($"IsGelijk(5,6)= " + del_int(5, 6));

            MijnGenericDelegate <double> del_double = IsGelijk;

            Console.WriteLine($"IsGelijk(5.5,5.5)= " + del_double(5.5, 5.5));
            Console.WriteLine($"IsGelijk(5.5,6.5)= " + del_double(5.5, 6.5));

            MijnGenericDelegate <string> del_string = IsGelijk;

            Console.WriteLine($"IsGelijk('Jos','Jos')= " + del_string("Jos", "Jos"));
            Console.WriteLine($"IsGelijk('Jos','Jan')= " + del_string("Jos", "Jan"));
            //Extra demo
            MijnGenericDelegate <Student> del_stud = IsGelijk;
            Student student1 = new Student()
            {
                VoorNaam = "Jos", FamilieNaam = "De Klos", GeboorteDatum = new DateTime(1990, 1, 1)
            };
            Student student2 = new Student()
            {
                VoorNaam = "Jan", FamilieNaam = "Jansens", GeboorteDatum = new DateTime(1990, 1, 1)
            };
            Student student3 = new Student()
            {
                VoorNaam = "Jos", FamilieNaam = "De Klos", GeboorteDatum = new DateTime(1990, 1, 1)
            };

            Console.WriteLine($"IsGelijk(student1,student1)= " + del_stud(student1, student1));
            Console.WriteLine($"IsGelijk(student1,student2)= " + del_stud(student1, student2));
            // Console.WriteLine($"IsGelijk(student1,student3)= " + del_stud(student1, student3));
            //Demo Bug enkel bij Delegates
            //Dit werkt wel op gewoonlijke manier:
            Console.WriteLine($"IsGelijk(student1,student3) zonder delegate = " + student1.Equals(student3));
            //!!!Opgelet BUG met delegate: op te lossen met constraint where T:IEquatable<T>: werkt dan goed:
            Console.WriteLine($"IsGelijk(student1,student3) via delegate = " + del_stud(student1, student3));
            Console.ReadKey();
        }