【问题标题】:Raise event when a new item is added in stack [duplicate]在堆栈中添加新项目时引发事件[重复]
【发布时间】:2012-11-17 18:05:36
【问题描述】:

可能重复:
Observable Stack and Queue

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

【问题讨论】:

    标签: c# stack


    【解决方案1】:

    创建继承自 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
        }
    

    【讨论】:

    • 您没有遵循事件模式。你应该使用(object sender, EventArgs e)
    • 是的,这是真的。我的意图只是展示可能的概念。在这种情况下,根本不需要 EventArgs。
    • 他在谈论通用 Stack 类 - 似乎。 Generic Stack 的 Push 和 Pop 不是虚拟的。
    • 您是否同意所有 Pushed to StackHolder 都可以呈现为字符串?这是最快和最简单的方法。当然,您可以创建将持有 Stack 并支持 ItemAdded 事件的类,但是需要更多代码。
    • 我认为最好创建一个类StackHolder<T>,里面有Stack<T>
    猜你喜欢
    • 2012-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-09
    • 1970-01-01
    • 1970-01-01
    • 2018-02-20
    • 1970-01-01
    相关资源
    最近更新 更多