static void CovarianceExample() { Console.WriteLine("Covariance Example"); VarianceDel del = Method1; del += Method2; //Thus, covariance allows you to assign a method to the delegate that has a less derived return type. Animal animal = del(new Dog()); }
static void ContravarianceExample() { Console.WriteLine("Contravariance Example"); VarianceDel del = Method1; del += Method2; //Method3 has a parameter of Animal class whereas delegate expects a parameter of Dog class. del += Method3; Animal animal = del(new Dog()); }