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) { }
}
}
views:
188answers:
2
+4
A:
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
Jason
2010-01-11 15:19:27
+4
A:
You're attempting to apply generic variance to a class. This is not supported. It is only supported on interfaces and delegate types.
Illegal:
class C<out T> { }
Legal:
interface C<out T> {}
JaredPar
2010-01-11 15:19:42