When I don’t remember, I always refer to IEnumerable<out T>(which, of course, I have to remember the signature of this interface ...). You can only get instances of T "out" from IEnumerable<out T>, so they are covariant. If you can only pass instances of T "in" to the interface (or delegate which is more common), this is contravariant.
source
share