1

可能重复:
可观察堆栈和队列

我的应用程序中有一个stack<String>。我可以使用Stack.Push(Object)Stack.Pop()。但是我想知道何时在堆栈中添加了一个新对象。我不知道它是否可能。有什么建议么?

4

1 回答 1

4

创建从 Stack 继承的类:

class StackHolder: Stack
{

    public delegate void ItemAddedDelegate(object item);
    public event ItemAddedDelegate ItemAdded;

    public override void Push(object obj)
    {
        base.Push(obj);
        if (ItemAdded != null)
        {
            ItemAdded(obj);
        }
    }
}

以下是您应该如何使用它:

        StackHolder sh = new StackHolder();
        sh.ItemAdded += new StackHolder.ItemAddedDelegate(sh_ItemAdded);

这是事件的处理程序:

    void sh_ItemAdded(object item)
    {
       //TODO: handle event
    }
于 2012-11-29T16:03:07.850 回答