所以我有一个通用列表,一个oldIndex和一个newIndex值。
oldIndex
newIndex
我想尽可能简单地将 , 的项目移动oldIndex到…。newIndex
有什么建议么?
该项目应该在它被移除之前(newIndex - 1)和newIndex 之前的项目之间结束。
(newIndex - 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 是开源的。