你好,我想做一个聊天,我在互联网上搜索,我终于找到了一些可能工作。但是现在我在name处得到一个错误,它说变量名在赋值之前被使用
代码:Public Sub findForm1()
If Trim(Mid(My.Forms.Private1.Text, My.Forms.Private1.Text.Length - 2)) = formNo Then
My.Forms.Private1.RichTextBox1.Text = My.Forms.Private1.RichTextBox1.Text & poruka + vbCrLf
ElseIf Trim(Mid(My.Forms.Private2.Text, My.Forms.Private2.Text.Length - 2)) = formNo Then
My.Forms.Private2.RichTextBox1.Text = My.Forms.Private2.RichTextBox1.Text & poruka + vbCrLf
Else
If My.Forms.Private1.Visible = False Then
Dim name As String
For i As Integer = 1 To poruka.Length
If Mid(poruka, i, 2) = ": " Then
Exit For
name = name & Mid(poruka, i, 1)
End If
Next
My.Forms.Private1.Show()
My.Forms.Private1.Text = Trim(name) & " " & br
My.Forms.Private1.RichTextBox1.Text = My.Forms.Private1.RichTextBox1.Text & poruka + vbCrLf
Else
Dim name As String
For i As Integer = 1 To poruka.Length
If Mid(poruka, i, 2) = ": " Then
Exit For
End If
name = name & Mid(poruka, i, 1)
Next
My.Forms.Private2.Show()
My.Forms.Private2.Text = Trim(name) & " " & br
My.Forms.Private2.RichTextBox1.Text = My.Forms.Private2.RichTextBox1.Text & poruka + vbCrLf
End If
End If
formNo = Nothing
poruka = Nothing
End Sub
如何修复这个错误??我已经试过移动if的末端,并改变一些其他的末端。
是的,编译器是完全正确的。代码中的问题可以归结为如下内容:
Dim name as String
name = name & "Foo"
您正在尝试将name
的当前值与另一个字符串("Foo")连接-但name
没有有值。
可以改成:
Dim name as String = ""
name = name & "Foo"
…但你最好使用StringBuilder
。例如,第一个循环可以是:
Dim nameBuilder As StringBuilder = New StringBuilder()
For i As Integer = 1 To poruka.Length
If Mid(poruka, i, 2) = ": " Then
Exit For
nameBuilder.Append(Mid(poruka, i, 1))
End If
Next
My.Forms.Private1.Show()
My.Forms.Private1.Text = Trim(nameBuilder.ToString()) & " " & br
问题是有几种情况可能导致变量从未被初始化。要修复,只需给出一个默认值,例如
Dim Name As String = ""
同样,你是重新声明相同的变量两次,你只需要这样做一次,只是清除它再次如果你需要它是"空白"为下一个循环或使用两个单独的变量(即更具体地命名)代替。