c# - 为什么我会收到以下错误?无效的方差修饰符。只有接口(interface)和委托(delegate)类型参数可以指定为变体

标签 c# c#-4.0 generics

 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) { }
  }
}

最佳答案

这是违规行:

class C<out T> 

正如错误消息告诉您的那样,您不能将泛型变化应用于类,只能应用于接口(interface)和委托(delegate)。这没关系:
interface C<out T>

以上不是。

详情见Creating Variant Generic Interfaces

关于c# - 为什么我会收到以下错误?无效的方差修饰符。只有接口(interface)和委托(delegate)类型参数可以指定为变体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2042678/

相关文章:

C# - 我可以从具有泛型基类型的类派生吗?

c# - 使用 Lambda 获取属性名称列表

c# - 如何使文本框中的默认文本变灰?

linq - 动态 LINQ : Comparing Nested Data With Parent Property

ios - swift 为通用类分配一些空值

java - 如何将通配符泛型与 Sets.powerSet 一起使用

c# - 使用 WIA 控制相机

c# - MemoryStream.CopyTo 不工作

c# - 在运行时生成通用类型

c# - 如何从用户控件调用一个方法到aspx页面?