小编典典

通用列表 - 在列表中移动项目

all

所以我有一个通用列表,一个oldIndex和一个newIndex值。

我想尽可能简单地将 , 的项目移动oldIndex到…。newIndex

有什么建议么?

笔记

该项目应该在它被移除之前(newIndex - 1)newIndex 之前的项目之间结束。


阅读 149

收藏
2022-08-02

共1个答案

小编典典

我知道你说的是“通用列表”,但你没有指定你需要使用 List(T) 类,所以这里有一个不同的东西。

ObservableCollection(T) 类有一个Move 方法,它完全符合您的要求。

public void Move(int oldIndex, int newIndex)

下面 基本 是这样实现的。

T item = base[oldIndex];
base.RemoveItem(oldIndex);
base.InsertItem(newIndex, item);

所以你可以看到其他人建议的交换方法本质上就是 ObservableCollection 在它自己的 Move 方法中所做的。

2015-12-30 更新:您现在可以在 corefx 中查看
Move
MoveItem方法的源代码,而无需使用
Reflector/ILSpy,因为 .NET 是开源的。

2022-08-02