5

我对数据结构只有两个要求:

  • 只读,
  • 保留顺序(我想始终按特定顺序枚举它)。

我知道这IReadOnlyList确实保持秩序。我可以使用它,但我不需要索引。这意味着我应该使用IReadOnlyCollection. 不幸的是,我找不到它保持秩序的信息。

你知道有没有?

4

1 回答 1

1

对于拥有只读列表,您可以采用不同的方法。

List<string> list = new List<string>();
IReadOnlyList<string> roList = list;
var roList1 = new ReadOnlyList(list);

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

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

于 2016-04-28T19:37:34.220 回答