在Visual Basic中,变量的作用域由它们的声明位置决定:在过程内部(局部变量),在类/模块级别(类或模块变量),或作为全局变量(在单独的文件中)。
Dim — 该变量仅在此过程内可用。Dim — 在类/模块的所有过程内可用。Public,Private,Friend — 对其他类/模块的访问设定了限制。示例:
Module Module1 Dim moduleVar As Integer = 5 Sub Main() Dim localVar As Integer = 10 Console.WriteLine(moduleVar) ' 可用 Console.WriteLine(localVar) ' 可用 End Sub Sub OtherSub() Console.WriteLine(moduleVar) ' 可用 Console.WriteLine(localVar) ' 错误! End Sub End Module
用
Static关键字在过程内声明的变量拥有何种作用域?
答复:
用关键字Static在过程内声明的变量仍然仅在该过程内部可用,但其值在过程调用之间保持不变。
示例:
Sub Counter() Static count As Integer count = count + 1 Console.WriteLine(count) End Sub ' 每次调用Counter都会增加count
故事
在项目中,在For循环内声明了标志变量Dim x As Boolean,期待它在每次进入新迭代时“重置”(如某些其他语言中)。但在退出循环后,该变量仍然可用,导致在第二次调用过程后出现不可预测的行为。
故事
一名程序员在模块中声明了public变量,结果被另一个具有相同名称的模块意外重写,导致程序不同部分出现严重错误。这使调试变得复杂,没有人能理解原因。
故事
一名学生为在一个子程序中累积总和声明了Static变量,以为它在每次调用时会“清除”。结果 — 在重复调用时,总和不断增加,给出了错误的结果。