2010-01-11 28 views
5
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) { } 
    } 
} 

回答

9

这是有问题的行:

class C<out T> 

随着错误消息告诉你,你不能通用方差适用于类,只有接口和与会代表。这样可以:

interface C<out T> 

以上不是。

有关详细信息,请参阅Creating Variant Generic Interfaces

+0

的链接断开。 – recursive 2011-06-08 17:13:24

+0

我修复了链接。 – 2011-06-10 17:57:35

4

你试图仿制方差应用于类。这不支持。它仅在接口和委托类型上受支持。

非法:

class C<out T> { } 

法律:

interface C<out T> {} 
相关问题