我有一个列表
List <Bitmap> memory = new List<Bitmap>();
。我在用这个列表保存图像状态,以便在处理图像的简单程序中使用。我想要实现撤销和重做操作,它们将在内存中保存的状态之间迭代(即保存在列表memory中)。
内存将仅具有有限的范围,例如20个状态,这意味着当我进行第21次图像修改时,我将删除第一个状态。可能通过操作memory.RemoveAt(0);
来实现。那么列表会发生什么变化?我需要一个比之前少1项的列表,并且索引向左移动。
我有一个列表list.Count = 20
,我删除第一项,我希望list.Count = 19
并且索引向左移动——就像修剪空闲空间一样,所以原始列表的索引1现在将具有索引0,原始索引的索引2将具有索引1等。我找到了一个列表的方法TrimExcess
,它可以做到我想要的,但我不确定。
当我有19个项目的列表时,我可以通过Add()
将新状态保存到最后一个位置,这样我又有了20个列表。
Bitmap
),或者至少清理它们。 - CodesInChaosmemory.RemoveAt(0);
... 我删除第一个项目...原始列表的索引1现在将具有索引0..." 这显然是一个FIFO结构。 - Sani Huttunen