VB.Net Tutorial/Class Module/Indexer

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

Define Indexer for your own class

Option Strict On
 Imports System
 Public Class MyItemList
     Private strings(255) As String
     Private ctr As Integer = 0
     Public Sub New(ByVal ParamArray initialStrings( ) As String)
         Dim s As String
         For Each s In initialStrings
             strings(ctr) = s
             ctr += 1
         Next
     End Sub
     Public Sub Add(ByVal theString As String)
         If ctr >= Strings.Length Then
         Else
             Strings(ctr) = theString
             ctr += 1
         End If
     End Sub
     Default Public Property Item(ByVal index As Integer) As String
         Get
             If index < 0 Or index >= strings.Length Then
             Else
                 Return strings(index)
             End If
         End Get
         Set(ByVal Value As String)
             If index >= ctr Then
             Else
                 strings(index) = Value
             End If
         End Set
     End Property
     Public Function Count( ) As Integer
         Return ctr
     End Function
 End Class
 Public Class Tester
     Public Shared Sub Main( )
         Dim lbt As New MyItemList("Hello", "World")
         Dim i As Integer
         Console.WriteLine("After creation...")
         For i = 0 To lbt.Count - 1
             Console.WriteLine("lbt({0}): {1}", i, lbt(i))
         Next
         lbt.Add("W")
         lbt.Add("I")
         lbt.Add("J")
         lbt.Add("t")
         Console.WriteLine("After adding strings...")
         For i = 0 To lbt.Count - 1
             Console.WriteLine("lbt({0}): {1}", i, lbt(i))
         Next
         Dim subst As String = "e"
         lbt(1) = subst
         Console.WriteLine("After editing strings...")
         For i = 0 To lbt.Count - 1
             Console.WriteLine("lbt({0}): {1}", i, lbt(i))
         Next
     End Sub
 End Class
After creation...
lbt(0): Hello
lbt(1): World
After adding strings...
lbt(0): Hello
lbt(1): World
lbt(2): W
lbt(3): I
lbt(4): J
lbt(5): t
After editing strings...
lbt(0): Hello
lbt(1): e
lbt(2): W
lbt(3): I
lbt(4): J
lbt(5): t

Searchable Indexer

Option Strict On
 Imports System
 Public Class MyArray
     Private strings(255) As String
     Private ctr As Integer = 0
     Public Sub New(ByVal ParamArray initialStrings() As String)
         Dim s As String
         For Each s In initialStrings
             strings(ctr) = s
             ctr += 1
         Next
     End Sub
     Public Sub Add(ByVal theString As String)
         If ctr >= strings.Length Then
         Else
             strings(ctr) = theString
             ctr += 1
         End If
     End Sub
     Default Public Property Item( _
        ByVal index As Integer) As String
         Get
             If index < 0 Or index >= strings.Length Then
             Else
                 Return strings(index)
             End If
         End Get
         Set(ByVal Value As String)
             If index >= ctr Then
             Else
                 strings(index) = Value
             End If
         End Set
     End Property
     Default Public Property Item( _
        ByVal index As String) As String
         Get
             If index.Length = 0 Then
             Else
                 Return strings(findString(index))
             End If
         End Get
         Set(ByVal Value As String)
             strings(findString(index)) = Value
         End Set
     End Property
     Private Function findString( _
        ByVal searchString As String) As Integer
         Dim i As Integer
         For i = 0 To strings.Length - 1
             If strings(i).StartsWith(searchString) Then
                 Return i
             End If
         Next
         Return -1
     End Function
     Public Function Count() As Integer
         Return ctr
     End Function
 End Class
 Public Class Tester
     Public Sub Run()
     End Sub
     Public Shared Sub Main()
         Dim lbt As New MyArray("Hello", "World")
         Dim i As Integer
         Console.WriteLine("After creation...")
         For i = 0 To lbt.Count - 1
             Console.WriteLine("lbt({0}): {1}", i, lbt(i))
         Next
         " add a few strings
         lbt.Add("W")
         lbt.Add("s")
         lbt.Add("n")
         lbt.Add("t")
         Console.WriteLine(vbCrLf & "After adding strings...")
         For i = 0 To lbt.Count - 1
             Console.WriteLine("lbt({0}): {1}", i, lbt(i))
         Next
         Dim subst As String = "e"
         lbt(1) = subst
         lbt("H") = "GoodBye"
         Console.WriteLine(vbCrLf & "After editing strings...")
         For i = 0 To lbt.Count - 1
             Console.WriteLine("lbt({0}): {1}", i, lbt(i))
         Next
     End Sub
 End Class
After creation...
lbt(0): Hello
lbt(1): World
After adding strings...
lbt(0): Hello
lbt(1): World
lbt(2): W
lbt(3): s
lbt(4): n
lbt(5): t
After editing strings...
lbt(0): GoodBye
lbt(1): e
lbt(2): W
lbt(3): s
lbt(4): n
lbt(5): t