Why do I get the following error? Invalid variance modifier. Only interface and delegate type parameters can be specified as variant
c#, c#-4.0, generics
Solution
This is the offending line:
class C<out T>
As the error message tells you, you can't apply generic variance to classes, only to interfaces and delegates. This would be okay:
interface C<out T>
The above is not.
For details, see Creating Variant Generic Interfaces
Problem
``` using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Variance { class A { } class B : A { } class C<out T> { } class Program { static void Main(string[] args) { var v = new C<B>(); CA(v); } static void CA(C<A> v) { } } } ```