ben*_*enj 3 vb.net variables scope declaration
我对VB来说是一个n00b,并且想知道如何在多个Subs中提供变量.它只是一个熟悉VB的测试应用程序.我的代码:
Public Class Sentences
Private Sub SentenceBox_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SentenceBox.TextChanged
If Me.Text = Trim(Sentence) Then
MsgBox("Good job!")
Main_Menu.Show()
Me.Close()
End If
End Sub
Private Sub ABCs_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim random As Integer = CInt((Rnd() * 10) + 1)
Dim Sentence As String
Select Case random
Case 1
Sentence = "The quick brown fox jumped over the lazy dog!"
Case 2
Sentence = "Hi there, how are you doing?"
Case 3
Sentence = "What is the answer to life?"
Case 4
Sentence = "The cat in the hat was fat."
Case 5
Sentence = "John and Sam had always been fat."
Case 6
Sentence = "The snow is falling hard."
Case 7
Sentence = "Here, dinner is always served nightly."
Case 8
Sentence = "The dog barks at the passing cars."
Case 9
Sentence = "The dust settles on the books."
Case 10
Sentence = "Fire burns brightly when you add kerosene."
End Select
End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
SentenceBox.Text = Sentence
End Sub
End Class
Run Code Online (Sandbox Code Playgroud)
我的错误是:
"句子"没有宣布.由于它的保护等级,它可能是可访问的."
VB.NET中的变量具有非常特殊的范围,根据声明的方式和位置,将其可用性限制在代码的各个部分.
您的Sentence变量具有过程级范围,这意味着它仅在声明它的过程中可用.在您的情况下,它在ABCs_Load方法("Sub")中声明,因此它只能用于该方法中的代码.
相反,如果您希望能够访问类Sentence中任何方法中的变量(Forms总是VB.NET中的类),则可以使用模块级范围声明变量.为此,您需要在任何特定方法(Sub或Function)之外向您的类添加私有字段.这个声明看起来像这样:Sentences
Private Sentence As String
Run Code Online (Sandbox Code Playgroud)
当然,您也可以将变量声明为Public而不是Private,这将使其可用于当前类之外的其他类.例如,如果你有第二个表单,你希望能够访问Sentence变量的内容,你可以Public在第一个表单的类中声明它,然后从第二个表单的类中的一个方法访问它,如下所示:
MessageBox.Show(myForm1.Sentence)
Run Code Online (Sandbox Code Playgroud)
请注意,因为它确实位于另一个表单(与正在访问的表中不同的类)中,所以必须完全限定对它的引用.这就像你的家人可能会称你为"迈克",但其他人不得不称你为"麦克琼斯",以区别于"迈克史密斯".
有关进一步阅读,请参阅MSDN上的这些相关文章:
| 归档时间: |
|
| 查看次数: |
63717 次 |
| 最近记录: |