我在C#中寻找下面java代码的等效语法。
ArrayList<Class <? extends A>> list = new ArrayList<Class<? extends A>>();
// Sample usage
list.add(A.class);
list.add(B.class); // B extends A
上面的列表基本上只接受A(或A)的子类作为输入。
提前感谢。
答案 0 :(得分:2)
C#中没有相同的内容。 C#中的泛型与Java中的泛型有很多不同,包括协方差和逆变工作方式。
您可以使用类型参数约束的泛型方法(或泛型类型),如下所示:
public void Foo<T>(IList<T> list) where T : SomeClass
或
public class Foo<T> where T : SomeClass
...但是Type
本身(.NET等价于Class<T>
)是非泛型的,所以没有办法说“这是一个扩展A
的类型列表”
如果您向我们提供有关您要实现的目标的更多信息,我们可能会为您提供更多帮助。
答案 1 :(得分:0)
C#语言从版本2.0开始具有泛型:
http://msdn.microsoft.com/en-us/library/512aeb7t.aspx
可在此处找到类型约束:
http://msdn.microsoft.com/en-us/library/d5x73970.aspx
我主要是Java程序员而不是C#程序员,所以我不确定你需要的确切语法,但是你应该可以从那里找到它。