为什么我不能在具有约束的通用类中使用值类型,其中T:IEnumerable <object>

时间:2019-01-31 13:56:24

标签: c#

我有一个约束为where T : IEnumerable<object>的通用类。我希望我可以使用任何类型来代替object。 但是,当我尝试使用List<SomeValueType>创建通用类的实例时,Visual Studio会给我类似There is no implicit reference conversion from System.Collections.Generic.List<ConsoleApp.Program.ValueType>' to System.Collections.Generic.IEnumerable<object>'的错误。所以我的问题是:为什么即使在值和引用类型都继承自object的情况下,也不能同时使用值和引用类型?

    static void Main(string[] args)
    {
        var example1 = new GenericClass<List<ReferenceType>>(); // it's ok

        // There is no implicit reference conversion 
        // from 'System.Collections.Generic.List<ConsoleApp.Program.ValueType>'
        // to 'System.Collections.Generic.IEnumerable<object>'
        var example2 = new GenericClass<List<ValueType>>(); 
    }

    public class GenericClass<T> where T : IEnumerable<object>
    {

    }

    public class ReferenceType
    {

    }

    public struct ValueType
    {

    }

0 个答案:

没有答案