VB.Net Tutorial/Class Module/Indexer — различия между версиями

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

Текущая версия на 15:55, 26 мая 2010

Define Indexer for your own class

<source lang="vbnet">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</source>
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

<source lang="vbnet">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</source>
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