VB.Net Tutorial/Collections/Stack

Материал из VB Эксперт
Перейти к: навигация, поиск

Convert and Copy Elements in a Stack to an Array

<source lang="vbnet">Option Strict On

Imports System
Imports System.Collections
Class Tester
    Public Shared Sub DisplayValues(ByVal myCollection As IEnumerable)
        Dim o As Object
        For Each o In myCollection
            Console.WriteLine(o)
        Next o
    End Sub
    Shared Sub Main( )
        Dim intStack As New Stack( )
        Dim i As Integer
        For i = 1 To 4
            intStack.Push((i * 5))
        Next i
        Console.WriteLine("intStack values:")
        DisplayValues(intStack)
        Const arraySize As Integer = 10
        Dim testArray(arraySize) As Integer
        For i = 1 To arraySize - 1
            testArray(i) = i * 100
        Next i
        Console.WriteLine("Contents of the test array")
        DisplayValues(testArray)
        intStack.CopyTo(testArray, 3)
        Console.WriteLine("TestArray after copy:  ")
        DisplayValues(testArray)
        Dim myArray As Object( ) = intStack.ToArray( )
        Console.WriteLine("The new array:")
        DisplayValues(myArray)
    End Sub
End Class</source>
intStack values:
20
15
10
5
Contents of the test array
0
100
200
300
400
500
600
700
800
900
0
TestArray after copy:
0
100
200
20
15
10
5
700
800
900
0
The new array:
20
15
10
5

IsSynchronized

<source lang="vbnet">Imports System.Threading Imports System.Collections public class Test

  public Shared Sub Main
              Dim S1 As New Stack()
              Dim SyncS1 As Stack = Stack.Synchronized(S1)
              Console.WriteLine("SyncS1: " & SyncS1.IsSynchronized.ToString())
              Console.WriteLine("S1: " & S1.IsSynchronized.ToString())
  End Sub

End class</source>

SyncS1: True
S1: False

Stack

<source lang="vbnet">Imports System.Collections public class Test

  public Shared Sub Main
       
       Dim txt As String = "asdf"
       Dim letter_stack As New Stack
       For i As Integer = 0 To txt.Length - 1
           Console.WriteLine(i)
           letter_stack.Push(txt.Substring(i, 1))
       Next
       Do While letter_stack.Count > 0
           Console.WriteLine(DirectCast(letter_stack.Pop(), String))
       Loop
  End Sub

End class</source>

0
1
2
3
f
d
s
a

Stack: Push, Pop and Peek

<source lang="vbnet">Option Strict On

Imports System
Imports System.Collections
Class Tester
    Public Shared Sub DisplayValues(ByVal myCollection As IEnumerable)
        Dim o As Object
        For Each o In myCollection
            Console.WriteLine(o)
        Next o
    End Sub "DisplayValues
    Shared Sub Main( )
        Dim intStack As New Stack( )
        " populate the stack
        Dim i As Integer
        For i = 0 To 7
            intStack.Push((i * 5))
        Next i
        " Display the Stack.
        Console.WriteLine("intStack values:")
        DisplayValues(intStack)
        " Remove an element from the stack.
        Console.WriteLine("(Pop){0}", intStack.Pop( ))
        " Display the Stack.
        Console.WriteLine("intStack values:")
        DisplayValues(intStack)
        " Remove another element from the stack.
        Console.WriteLine("(Pop){0}", intStack.Pop( ))
        " Display the Stack.
        Console.WriteLine("intStack values:")
        DisplayValues(intStack)
        " View the first element in the
        " Stack but do not remove.
        Console.WriteLine("(Peek)   {0}", intStack.Peek( ))
        " Display the Stack.
        Console.WriteLine("intStack values:")
        DisplayValues(intStack)
    End Sub "Main
End Class "Tester</source>
intStack values:
35
30
25
20
15
10
5
0
(Pop)35
intStack values:
30
25
20
15
10
5
0
(Pop)30
intStack values:
25
20
15
10
5
0
(Peek)   25
intStack values:
25
20
15
10
5
0