[英]What read-only, order-preserving collection in C# should I use to support enumeration?
我对数据结构只有两个要求:
我知道IReadOnlyList
确实保留了顺序。 我可以使用它,但我不需要索引。 这意味着我应该使用IReadOnlyCollection
。 不幸的是,我找不到它保留订单的信息。
你知道吗?
如果有一个只读列表,您可以遵循不同的方法。
List<string> list = new List<string>();
IReadOnlyList<string> roList = list;
var roList1 = new ReadOnlyList(list);
roList
和roList1
都是只读的,但如果你知道roList
的原始类型是List<string>
你可以将其转换并修改集合。 因此,第二种选择是更好的选择。 要指出的是, IEnumerable<string>
也是只读的,因为它没有提供任何修改集合的方法(如果你没有将它转换为原始类型)。
对于第二个问题,我们可以说任何List<T>
保留订单。 如果您不想提供查询列表和使用OrderBy
的方法,则使用从IEnumerable
派生的类是不可能的。 这是因为扩展方法。 尽管如此,列表实例中的顺序仍然保留,但您可以重新查询。 这并不意味着触摸或修改原始列表。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.