C# Stack Type would be handy here, undo is nothing but it would return the last event in an Array.
stack is LIFO (last in first out) so I will go with stack for undo. Stack is always be useful than list in chronological ordering aspect
the ans is
Stack<string> udQ = gcnew Stack<string>();
here is simple undo sample code
Stack<Action> undoStack = new Stack<Action>();
void ChangeColor(Color color)
{
var original = this.Object.Color;
undoStack.Push(() => this.Object.Color = original);
this.Object.Color = color;
}