如何在c#中使用泛型扩展

本文关键字:泛型 扩展 | 更新日期: 2023-09-27 18:16:40

我是C#的新手,如何使用下面的通用c#,我想在C#中使用下面的Java语句,

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

Java允许以上,我们可以在C#中实现相同的吗?

如何在c#中使用泛型扩展

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