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(); }