繁体   English   中英

我应该使用C#中的只读,保留订单集合来支持枚举?

[英]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);

roListroList1都是只读的,但如果你知道roList的原始类型是List<string>你可以将其转换并修改集合。 因此,第二种选择是更好的选择。 要指出的是, IEnumerable<string>也是只读的,因为它没有提供任何修改集合的方法(如果你没有将它转换为原始类型)。

对于第二个问题,我们可以说任何List<T>保留订单。 如果您不想提供查询列表和使用OrderBy的方法,则使用从IEnumerable派生的类是不可能的。 这是因为扩展方法。 尽管如此,列表实例中的顺序仍然保留,但您可以重新查询。 这并不意味着触摸或修改原始列表。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM