C# Generics – Covariance and Contravariance
Only interfaces and delegate type support out and in keywords. Covariance uses the OUT keyword. It is read-only. The type T comes out of the interface as a return value. If your interface type can be covariant, your design will be more flexible if you mark it as covariant (with the out modifier) Contravariance means …