我对数据结构只有两个要求:
- 只读,
- 保留顺序(我想始终按特定顺序枚举它)。
我知道这IReadOnlyList
确实保持秩序。我可以使用它,但我不需要索引。这意味着我应该使用IReadOnlyCollection
. 不幸的是,我找不到它保持秩序的信息。
你知道有没有?
我对数据结构只有两个要求:
我知道这IReadOnlyList
确实保持秩序。我可以使用它,但我不需要索引。这意味着我应该使用IReadOnlyCollection
. 不幸的是,我找不到它保持秩序的信息。
你知道有没有?
对于拥有只读列表,您可以采用不同的方法。
List<string> list = new List<string>();
IReadOnlyList<string> roList = list;
var roList1 = new ReadOnlyList(list);
roList
并且roList1
都是只读的,但如果你知道它的原始类型roList
是List<string>
你可以转换它并修改集合。因此,第二种选择是更好的选择。需要指出的是, aIEnumerable<string>
也是只读的,因为它不提供任何修改集合的方法(如果您不将其转换为原始类型)。
对于第二个问题,我们可以说 anyList<T>
保留了顺序。如果您不想提供查询列表并使用的方法,OrderBy
则无法使用派生自 的类IEnumerable
。这是因为扩展方法。尽管如此,列表实例中的顺序仍然保留,但您可以重新查询。这并不意味着原始列表被触动或修改。