19-12-17, 01:26 PM
الكود التالي عبارة عن كلاس يؤدي نفس الفكرة
الكلاس مكتوب بشكل يختلف قليلا عن الكلاس الخاص بك
طريقة الاستخدام
الكلاس مكتوب بشكل يختلف قليلا عن الكلاس الخاص بك
PHP كود :
Public Class WordGenerator
Implements IEnumerable(Of String)
Private _source As String
Private _valid As Integer
Public Sub New(source As String)
_source = source
_valid = If(Not String.IsNullOrEmpty(source), 1, 0)
End Sub
Private Function Increment() As List(Of String)
Dim values As List(Of Char) = CType(Nothing, List(Of Char))
Dim result As List(Of String) = CType(Nothing, List(Of String))
If _valid Then
values = _source.Distinct().ToList
result = New List(Of String)()
Dim i As Integer = 0
While i < values.Count
Dim func As Func(Of String, String) = Function(s) values(i).ToString + values(i).ToString + values(i).ToString + s
Dim indented As String = String.Empty
If TryIncrement(func) Then
indented += func(values(values.Count - 1 - i).ToString)
result.Add(indented)
End If
i += 1
End While
End If
Return result
End Function
Private Function TryInCrement(ByRef source As String, func As Func(Of String, String)) As Boolean
While func IsNot Nothing
Dim src As String = source
Dim dest As String = func(src)
If src = dest Then
Exit While
End If
If src <> dest Then
Return True
End If
End While
Return False
End Function
Private Function TryIncrement(func As Func(Of String, String)) As Boolean
Dim source As String = Nothing
Return TryInCrement(source, func)
End Function
Public Function GetEnumerator() As IEnumerator(Of String) Implements IEnumerable(Of String).GetEnumerator
Return If(_valid, CType(Increment(), IEnumerable(Of String)).GetEnumerator, New List(Of String)().GetEnumerator)
End Function
Private Function IEnumerable_GetEnumerator() As IEnumerator Implements IEnumerable.GetEnumerator
Return If(_valid, CType(Increment(), IEnumerable(Of String)).GetEnumerator, New List(Of String)().GetEnumerator)
End Function
End Class
طريقة الاستخدام
PHP كود :
Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim s As String = "ABCDEF"
Dim wg As WordGenerator = New WordGenerator(s)
For Each value As String In wg
ListBox1.Items.Add(value)
Next
End Sub
End Class
Retired

