2015-10-06 92 views
-2

我是新来C#,如何以下普通使用C#,我想的一样,如下面C#Java声明,如何使用通用扩展了C#

List<? extends MySuperClass> list= new ArrayList<MySubClass>(); 

Java上面允许的话,我们可以实现同样在C#

+0

在C#中被称为泛型约束。 –

+0

相关:http://stackoverflow.com/q/32664/1065197 http://stackoverflow.com/q/588643/1065197 –

+0

这不是一个在Java中使用泛型的好例子。 –

回答

4

C#没有通配符。所以简单的答案是否定的,没有直接的等价。

但是,我认为在Java中编写这行代码并不重要,因为您正在丢弃类型信息。你不妨写

List<MySubClass> list = new ArrayList<MySubClass>(); 

的主要原因是在Java中使用通配符是允许方法的参数是尽可能通用,这样的:

static void foo(List<? extends MySuperClass> list) 

你可以做到这一点与C#这样的:

static void foo<T>(IList<T> list) where T : MySuperClass 
+0

我如何使用这个变量如下 'public AbstractIBaseBo <?扩展AbstractDomain> abstractIBaseBo = null;' –

+0

@AnchitPancholi我觉得设计很奇怪。你应该避免声明这样的字段。 –

+0

@AnchitPancholi我不认为你可以。我可能错了,因为我对C#不熟悉,因为我不熟悉Java。我认为你可以有一个'AbstractIBaseBo '。我也认为你可以在类型参数为'T'的泛型类中有'AbstractBaseBo '类型的字段,其中'T:AbstractDomain'。 –