C#属性中与java等价的有界通配符是什么
本文关键字:通配符 是什么 属性 java | 更新日期: 2023-09-27 18:28:08
我正在寻找以下行的等效C#代码
private List<? extends HotSpot> hotSpots;
非常感谢您的帮助。
根据您的具体需求,您可能正在寻找:
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>
这样的具体类型不可能存在于类型系统中。