一尘不染

是否列出 保证插入顺序?

c#

假设我在列表中有3个字符串(例如“ 1”,“ 2”,“ 3”)。

然后,我想对它们进行重新排序以将“ 2”放置在位置1(例如“ 2”,“ 1”,“ 3”)。

我正在使用此代码(将indexToMoveTo设置为1):

listInstance.Remove(itemToMove);
listInstance.Insert(indexToMoveTo, itemToMove);

这似乎可行,但是我偶尔会得到奇怪的结果。有时订单不正确或列表中的项目被删除!

有任何想法吗?是否List<T>保证订单?

有关:

List 是否保证以添加顺序返回项目?


阅读 184

收藏
2020-05-19

共1个答案

一尘不染

List<>类不保证排序-事情会在包括重复添加它们,顺序列表被保留,除非你明确地分类列表。

根据MSDN:

…列表“表示可以 通过index 访问的对象的强类型列表。”

索引值必须保持可靠才能使其准确。因此,保证了订单。

如果您将代码移到列表的后面,则可能会从代码中得到奇怪的结果,因为您Remove()将在调用之前将所有其他项目移到一个位置Insert()

您可以将代码精简到可以发布的程度吗?

2020-05-19