具有索引支持的集合中的协方差
集合中的协方差允许派生项存储在为基类型声明的集合中。然而,默认的协变集合 IEnumerable 缺乏索引支持。
正如发问者所指出的,向上转换 List
可能的解决方案
从 .NET 4.5 开始,IReadOnlyList
创建协变包装器
如果需要具有索引支持的可写集合,可以创建扩展方法来包装 IList< ;T>并仅公开提供所需协方差的方法子集:
public static class Covariance { public static IIndexedEnumerable<T> AsCovariant<T>(this IList<T> tail) { return new CovariantList<T>(tail); } private class CovariantList<T> : IIndexedEnumerable<T> { // Implementation... } }
此包装类 CovariantList
通过在 IList
以上是如何通过集合中的索引支持实现协方差?的详细内容。更多信息请关注PHP中文网其他相关文章!