22 .net c# collections
我似乎无法通过阅读MSDN上的ObservableCollection.Move(int oldIndex,int newIndex)的文档来解决这个问题:
oldIndex类型:System.Int32从零开始的索引,指定要移动的项的位置.newIndex类型:System.Int32从零开始的索引,指定项的新位置.
我不明白它是如何工作的.该项目会发生什么变化newIndex?我的假设是每个项目的索引index >= newIndex递减.这个假设是否正确?更重要的是,在MSDN上某处解释或描述了这种行为?
nem*_*esv 31
让我Move以单元测试的形式解释一下行为:
[Test]
public void ObservableTest()
{
var observable = new ObservableCollection<string> { "A", "B", "C", "D", "E" };
observable.Move(1, 3); // oldIndex < newIndex
// Move "B" to "D"'s place: "C" and "D" are shifted left
CollectionAssert.AreEqual(new[] { "A", "C", "D", "B", "E" }, observable);
observable.Move(3, 1); // oldIndex > newIndex
// Move "B" to "C"'s place: "C" and "D" are shifted right
CollectionAssert.AreEqual(new[] { "A", "B", "C", "D", "E" }, observable);
observable.Move(1, 1); // oldIndex = newIndex
// Move "B" to "B"'s place: "nothing" happens
CollectionAssert.AreEqual(new[] { "A", "B", "C", "D", "E" }, observable);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7851 次 |
| 最近记录: |