我正在为我的应用程序做一个UndoRedo功能。现在,在功能DoAction上,我有Stack<UndoRedoAction>采取的操作的列表。现在,我想获取上一次执行的操作,该操作将自动成为列表中的第一个。要取出我使用过的列表中的第一个操作,actionList.Peek();现在,出现的情况是,下一次我想从列表中选择第二个。我不确定该怎么做

private void DoAction(Stack<UndoRedoAction> actionList, Stack<UndoRedoAction> storeList, Action<UndoRedoAction> action)
{
    if (actionList.Count > 0)
    {
        UndoRedoAction urAction = actionList.Peek();
        action(urAction);
        storeList.Push(urAction);
    }
}

最佳答案

您需要使用Stack<T>.Pop而不是PeekPop删除堆栈中最后添加的项目并返回它,而Peek返回最后添加的项目而不将其从堆栈中删除。

07-26 07:23