Заметный стек и очередь

Я ищу INotifyCollectionChanged реализация Stack и Queue. Я мог прокрутить свое собственное, но я не хочу изобретать велосипед.

15
задан skypjack 27 February 2016 в 15:29
поделиться

1 ответ

С Стеки и очереди (почти по определению) у вас есть доступ только к вершине стека или главе очереди. Это то, что отличает их от Списка . (и вот почему вы его не нашли)

Чтобы ответить, хотя вы могли бы написать свой собственный, я бы сделал это, производя от ObservableCollection , а затем в случае стека, реализующего Нажмите как Insert со смещением 0 (и вытолкните как возвращающий индекс 0, затем RemoveAt index 0); или с очередью вы можете просто Добавить в конец списка в Enqueue , а также захватить и удалить первый элемент, как со стеком, для Dequeue ]. Операции Insert , Add и RemoveAt будут вызываться для базового ObservableCollection и, таким образом, вызвать событие CollectionChanged быть уволенным.


Вы также можете сказать, что просто хотите привязать или получать уведомление, когда один элемент, к которому у вас должен быть доступ, изменится. Вы должны снова создать свой собственный класс, производный от Stack или Queue, и запустить событие CollectionChanged вручную, когда:

  • Что-то помещается в стек или извлекается из него
  • Что-то удаляется из очереди
  • Что-то помещается в очередь очередь, когда она была ранее пуста
9
ответ дан 1 December 2019 в 00:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: