// It's safe to say that something can take a Cat if in fact this thing can take any Animal class Contravariance { static void test() { Action a = Method; // OK Action b = delegate(Animal value) { }; // ERROR // From C#3 Specification : // $7.14.1 Anonymous function signatures : // [...] contra-variance of anonymous function parameter types is not supported. Action d = (Animal value) => { }; // idem... anonymous... not supported. } public static void Method(Animal value) { } }