gpt4 book ai didi

vb.net - VB 2010 'variable' 未声明。由于它的保护级别,它可能无法访问

转载 作者:行者123 更新时间:2023-12-01 09:38:00 25 4
gpt4 key购买 nike

我是 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

我的错误是:

"Sentences" is not declared. It may be in accessable due to it's protection level."

最佳答案

VB.NET 中的变量有一个非常特殊的scope ,将它们的可用性限制在代码的各个部分,具体取决于它们的声明方式和位置。

您的 Sentence 变量具有过程级范围,这意味着它仅在声明它的过程中可用。 在您的情况下,它在ABCs_Load 方法(“Sub”),因此它只能用于该方法中的代码。

相反,如果您希望能够访问类中任何方法中的Sentence变量(Forms总是VB.NET 中的类),您可以声明具有模块级范围的变量。为此,您需要添加 private field到您的 Sentences 类,在任何特定方法(Sub 或 Function)之外。该声明将如下所示:

Private Sentence As String


当然,您也可以将变量声明为 Public 而不是 Private,这将使其可用于当前类之外的其他类。例如,如果您有一个 second 表单,希望能够访问 Sentence 变量的内容,则可以将其声明为 Public 在第一个表单的类中,然后从 second 表单的类中的一个方法访问它,如下所示:

MessageBox.Show(myForm1.Sentence)

请注意,由于它确实位于另一种形式中(与访问它的类不同的类),因此您必须完全限定对它的引用。这就像您的家人可能会称您为“迈克”,但其他人必须称您为“迈克琼斯”,以区别于“迈克史密斯”。


如需进一步阅读,另请参阅 MSDN 上的这些相关文章:

关于vb.net - VB 2010 'variable' 未声明。由于它的保护级别,它可能无法访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4289426/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com