VB.Net Tutorial/Class Module/Indexer — различия между версиями
Admin (обсуждение | вклад) м (1 версия) |
Admin (обсуждение | вклад) м (1 версия) |
(нет различий)
|
Текущая версия на 12:55, 26 мая 2010
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