一尘不染

可观察的堆栈和队列

c#

我正在寻找一个INotifyCollectionChanged的实施StackQueue。我可以自己动手,但我不想重新发明轮子。


阅读 353

收藏
2020-05-19

共1个答案

一尘不染

使用堆栈和队列(几乎按定义),您只能访问堆栈的顶部或队列的头部。这就是它们与区别的地方List。(因此,这就是为什么您找不到一个的原因)

为了回答您可以编写自己的问题的方法,我可以通过从派生 ObservableCollection,然后在将实现PushInsertat偏移量0
的堆栈中实现(并以pop的形式返回索引0,然后再RemoveAt索引0);或者使用队列,您可以Add将列表Enqueue拖到的末尾,然后像抓取堆栈一样抓取并删除第一个项目Dequeue。的InsertAdd并且RemoveAt行动将在底层调用ObservableCollection等原因CollectionChanged被解雇的事件。


您可能还说您只是想绑定或在您应该有权访问的一项发生更改时收到通知。您将再次创建从Stack或Queue派生的自己的类,并在以下情况下手动触发CollectionChanged事件:

  • 东西被推到堆栈上或从堆栈中弹出
  • 某些东西从队列中出队
  • 队列为空时,队列中有排队的东西
2020-05-19