在Java中,我可以执行以下操作:(假设Subclass扩展Base):

ArrayList<? extends Base> aList = new ArrayList<Subclass>();

C#中的类似功能是什么.网显然没有? extends个关键词,这不起作用:

List<Base> aList = new List<Subclass>();

推荐答案

实际上,有一个相当于where的关键字.我不知道它有多"接近".我有一个功能,我需要做类似的事情.

我找到了一个msdn page分的答案.

I don't know if you can do this inline for a variable, but for a class you can do:
public class MyArray<T> where T: someBaseClass
or for a function
public T getArrayList<T>(ArrayList<T> arr) where T: someBaseClass

我没有在页面上看到它,但使用where关键字可能会有一个变量.

.net相关问答推荐

为什么$NULL在ForEach-Object{}和Foreach()中的行为不同?

节省用户在整个应用程序中使用的Flutter

dotnet 8 web api在部署到docker后无法工作

.NET Core 中的微服务

Dictionary.FirstOrDefault() 如何判断是否找到了结果

为什么循环引用被认为是有害的?

使用 Task.Factory.StartNew 传递方法参数

LINQ:确定两个序列是否包含完全相同的元素

通用枚举到int的C#非装箱转换?

如何使用c#从excel文件中读取数据

为什么 C# 多维数组不实现 IEnumerable

C# 中基于接口编程的运算符重载

如何判断对象是否是某种类型的数组?

如何让 .NET 的 Path.Combine 将正斜杠转换为反斜杠?

修剪数组中的所有字符串

是否有可用的 WPF 备忘单?

在 .NET Core 中在 MVC 之外使用 Razor

SqlBulkCopy 的推荐批量大小是多少?

IronPython 与 Python .NET

模拟和单元测试需要时如何抛出 SqlException?