本文整理汇总了C#中VList.NextIn方法的典型用法代码示例。如果您正苦于以下问题:C# VList.NextIn方法的具体用法?C# VList.NextIn怎么用?C# VList.NextIn使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类VList
的用法示例。
在下文中一共展示了VList.NextIn方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: TestSublistProblem
public void TestSublistProblem()
{
// This problem affects FVList.PreviousIn(), VList.NextIn(),
// AddRange(list, excludeSubList), VList.Enumerator when used with a
// range.
// Normally this works fine:
VList<int> subList = new VList<int>(), list;
subList.AddRange(new int[] { 1, 2, 3, 4, 5, 6, 7 });
list = subList;
list.Add(8);
Assert.That(subList.NextIn(list).Last == 8);
// But try it a second time and the problem arises, without some special
// code in VListBlock<T>.FindNextBlock() that has been added to
// compensate. I call the problem copy-causing-sharing-failure. You see,
// right now subList is formed from three blocks: a size-8 block that
// contains {7}, a size-4 block {3, 4, 5, 6} and a size-2 block {1, 2}.
// But the size-8 block actually has two items {7, 8} and when we
// attempt to add 9, a new array must be created. It might waste a lot
// of memory to make a new block {9} that links to the size-8 block that
// contains {7}, so instead a new size-8 block {7, 9} is created that
// links directly to {3, 4, 5, 6}. That way, the block {7, 8} can be
// garbage-collected if it is no longer in use. But a side effect is
// that subList no longer appears to be a part of list. The fix is to
// notice that list (block {7, 9}) and subList (block that contains {7})
// have the same prior list, {3, 4, 5, 6}, and that the remaining
// item(s) in subList (just one item, {7}, in this case) are also
// present in list.
list = subList;
list.Add(9);
Assert.AreEqual(9, subList.NextIn(list).Last);
}
示例2: TestEmptyListOperations
public void TestEmptyListOperations()
{
VList<int> a = new VList<int>();
VList<int> b = new VList<int>();
a.AddRange(b);
a.InsertRange(0, b);
a.RemoveRange(0, 0);
Assert.That(!a.Remove(0));
Assert.That(a.IsEmpty);
a.Add(1);
b.AddRange(a);
ExpectList(b, 1);
b.RemoveAt(0);
Assert.That(b.IsEmpty);
b.InsertRange(0, a);
ExpectList(b, 1);
b.RemoveRange(0, 1);
Assert.That(b.IsEmpty);
b.Insert(0, a[0]);
ExpectList(b, 1);
b.Remove(a.Last);
Assert.That(b.IsEmpty);
AssertThrows<InvalidOperationException>(delegate() { a.NextIn(b); });
}