Как отловить изменение количества элементов стека - Visual Basic .NET

Узнай цену своей работы

Формулировка задачи:

Привет. У меня в программе коллекция типа стек. На стек данные кладутся в одной процедуре, а снимаются в нескольких. Для статистики нужно отслеживать количество элементов в стеке. Как отловить изменение количества элементов стека (StackCountChanged)?

Решение задачи: «Как отловить изменение количества элементов стека»

textual
Листинг программы
Public Class Form1
 
    Private mStack As New MyStack(Of String)
 
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Button1.Text = "Push"
        Button2.Text = "Pop"
        Button3.Text = "Peek"
        Button4.Text = "Count"
 
        AddHandler mStack.CountChanged, AddressOf mStackCountChanged
    End Sub
 
    Private Sub mStackCountChanged()
        MsgBox("mStackCountChanged")
    End Sub
 
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Static i As Integer = 0
        i += 1
        mStack.Push("Item=" & i.ToString)
    End Sub
 
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        MsgBox("Pop " & mStack.Pop)
    End Sub
 
    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        MsgBox("Peek " & mStack.Peek)
    End Sub
 
    Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
        MsgBox("Count=" & mStack.Count)
    End Sub
End Class
 
Public Class MyStack(Of T)
    Inherits Stack(Of T)
 
    Public Event CountChanged()
 
    Protected Overloads Sub Push(ByVal o As T)
        MyBase.Push(o)
 
        RaiseEvent CountChanged()
    End Sub
End Class

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4.429 из 5
Похожие ответы