在堆栈中添加新项目时引发事件

时间:2012-11-29 15:56:53

标签: c# stack

  

可能重复:
  Observable Stack and Queue

我的申请表中有stack<String>。我可以使用Stack.Push(Object)Stack.Pop()。但是我想知道在堆栈中添加新对象的时间。即使有可能,我也不知道。有什么建议吗?

1 个答案:

答案 0 :(得分: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
    }