[英]visual basic array searching
我正在嘗試從用戶輸入的文本框中搜索與新傳入條目匹配的先前條目的數組。 在Visual Basic中有什么方法可以做到這一點? 我正在從C#轉換代碼,Visual Basic不斷給我一個錯誤“對象引用未設置為對象實例”。 使用此語句,代碼將跳過if塊以檢查是否有匹配的文本,因為在這種情況下arrayName(i)或0當前為NOTHING。 如果我取出此if塊並到達名稱檢查,則將導致錯誤,因為arrayName(i)中沒有任何內容可轉換為大寫字符串。
所以這是我的代碼。我的問題再次是是否有一種更簡單的方法來搜索數組中的先前條目到新輸入的條目。
編輯:詳細信息
這是數組聲明Dim arrayName() = New String(2) {}
,當它到達If arrayName(i).ToString.ToUpper = txtInput.Text.ToUpper時,它說“對象變量或未設置塊變量。 “ “用戶代碼未處理NullReferenceException”。 代碼中的“ x”是數組的固定長度,在這種情況下為2。
Dim i As Integer = 0
While x >= i
If arrayName(i) IsNot Nothing Then
If arrayName(i).ToString.ToUpper = txtInput.Text.ToUpper Then
match = False
lblName.Text = "Enter a unique name"
End If
End If
i += 1
End While
由於您不想使用內置的搜索功能...請嘗試...
將此聲明在“全局范圍”下...因此放在表單類下...
Dim counter As Integer = 0
Dim arrayname(10) As String
添加按鈕控件...並添加此代碼...
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
If counter < 10 Then
Dim input As String = InputBox("Please input name.")
If input = "" Then
MsgBox("Nothing entered!")
Exit Sub
End If
For x = 0 To 10
If UCase(input) = UCase(arrayname(x)) Then
MsgBox("Duplicate name!")
Exit Sub
End If
Next x
arrayname(counter) = input
counter += 1
Else
MsgBox("Array full!")
End If
End Sub
而已。 編輯以適合您的確切需求。 告訴我是否可行:)
您的代碼段尚未定義x
。
您可以使用一些LINQ來有效地搜索陣列:
Dim listFound As IEnumarable(String) = From item In arrayName _
Where item.ToString.ToUpper _
= txtInput.Text.ToUpper _
Select item
If listFound.Count > 0 Then
lblName.Text = "Enter a unique name"
End If
或者,您可以手動搜索數組,但是我認為這比您使用的方法更有效:
Dim Match As Boolean = False
For i As Integer = 0 To arrayName.Count - 1
If Not IsNothing(arrayName(i)) Then
If arrayName(i).ToString.ToUpper = txtInput.Text.ToUpper Then
Match = True
Exit For
End If
End If
Next
If Match Then
lblName.Text = "Enter a unique name"
End If
需要注意的最后兩項: arrayName(i).ToString.ToUpper
等效於UCase(arrayName(i))
。 您可能需要執行一些速度測試,以查看哪個實際上更快。
另外,在VB中,將Dim myArray As String(3)
與Dim myArray() = New String(3) {}
。 第一個示例生成一維數組。 最后一個示例生成一個二維數組。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.