我有一个约束为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
{
}