C#属性中与java等价的有界通配符是什么

本文关键字:通配符 是什么 属性 java | 更新日期: 2023-09-27 18:28:08

我正在寻找以下行的等效C#代码

private List<? extends HotSpot> hotSpots;

非常感谢您的帮助。

C#属性中与java等价的有界通配符是什么

根据您的具体需求,您可能正在寻找:

public class MyClass
{
    private IList<HotSpot> hotSpots;
}

或使用where

public class MyClass<T> where T : HotSpot
{
    private IList<T> hotSpots;
}

在功能上,我认为最接近的是:

IEnumerable<HotSpot> hotSpots;

若可枚举对象的实类型恰好是IList,那个么ElementAt()就是O(1)。

从.NET 4.5开始,您还可以使用:

IReadOnlyList<HotSpot> hotSpots;

并且使用CCD_ 4来包装规则列表。

.NET处理泛型差异的方法是让特定的接口是协变的或反变的,因此只允许它们定义只将泛型类型参数作为返回值的方法,或者只在参数列表中定义。(与Java相反,编译器在每个表达式中都进行这些检查。)我的猜测是,基本原理是C#使用具体化实现泛型,而List<out T>这样的具体类型不可能存在于类型系统中。