Java泛型类类型的C#等效语法

时间:2013-12-15 09:09:36

标签: c# java .net

我在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)的子类作为输入。

提前感谢。

2 个答案:

答案 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#程序员,所以我不确定你需要的确切语法,但是你应该可以从那里找到它。