小编Sha*_*app的帖子

约束泛型类型参数的逆解

参考在Visual Studio 2010 Express中为C#编译的这个测试代码

public class Test
{
    class Base { }
    class Derived : Base { }

    void Test1(IEnumerable<Derived> derived)
    {
        IEnumerable<Base> b = derived; //This works fine using covariance on IEnumerable
    }

    void Test2<TDerived, TBase>(TDerived derived) where TDerived : TBase
    {
        TBase b = derived; //This works fine because TDerived is constrained to derive from TBase
    }

    void Test3<TDerived, TBase>(IEnumerable<TDerived> derived) where TDerived : TBase
    {
        IEnumerable<TBase> b = derived; //ERROR: paraphrased: Cannot implicitly convert type IEnumerable<TDerived> to …
Run Code Online (Sandbox Code Playgroud)

c# generics covariance

2
推荐指数
1
解决办法
422
查看次数

标签 统计

c# ×1

covariance ×1

generics ×1