如何在堆栈中表示Collection PLUS Integer?

时间:2012-12-29 03:54:02

标签: winforms design-patterns

我们使用Stack为用户提供简单的“后退”按钮。我们将集合推入堆栈并在他回击时将其弹出。

今天我们想稍微扩展一下。当我们将一个集合推入堆栈时,我们希望在集合旁边存储一个整数。然后,当我们查看堆栈时,我们想要检索集合PLUS的整数。

什么是推动我们的收藏的最佳方式将整数推入堆栈?

我们应该为集合和整数定义一个Struct或Class吗?或者其他一些方式?

2 个答案:

答案 0 :(得分:1)

最简单和开箱即用的解决方案是使用整数扩展当前容器:

public class StackElement : CustomerCollection
{ 
   public int Version {get; set;}
}

或制作带整数的合成:

public class StackElement
{ 
   public CustomerCollection Customers {get; set;}
   public int Version {get; set;}
}

然后像使用堆栈中的任何其他东西一样使用它:

Stack<StackElement> stack = new Stack<StackElement>();
stack.Push(...)
var stackElement = stack.Pop();

答案 1 :(得分:1)

您不需要为此目的创建新类。您可以像这样简单地将值添加到堆栈中;

stack.Push(new KeyValuePair<int, Collection>(yourInteger, yourCollection));

让他们这样;

KeyValuePair<int, Collection> valueYouWant = stack.Pop();

valueYouWant.Key   --> Your integer
valueYouWant.Value --> Your collection