在C#中将通用对象添加到通用列表

err*_*rcw 12 c# generics list

我上课的相关部分看起来像

class C {
    void Method<T>(SomeClass<T> obj) {
        list.Add(obj);
    }
    List<?> list = new List<?>();
}
Run Code Online (Sandbox Code Playgroud)

我应该如何定义列表以便类编译?

我想要一个类型List<SomeClass<?>>列表,SomeClass即每个对象可以具有任何类型参数的对象列表.Java ?构造允许这样做; 什么是C#等价物?如果不存在这样的事情,是否有合适的解决方法?(A List<object>会做,但非常难看.)

Dan*_*fer 13

我认为你不能在C#中做到这一点......你必须在类中添加type参数:

class C<T> {
    void Method(SomeClass<T> obj) {
        list.Add(obj);
    }
    List<SomeClass<T>> list = new List<SomeClass<T>>();
}
Run Code Online (Sandbox Code Playgroud)

另一种选择是使用接口:

class C {

    void Method<T>(T obj)
         where T : ISomeClass {
        list.Add(obj);
    }
    List<ISomeClass> list = new List<ISomeClass>();
}
Run Code Online (Sandbox Code Playgroud)