VB如何将变量拆分到独立类,使其可在Form1内像全局变量调用
VB.NET 拆分变量到独立类的简便实现方案
根据你的需求,这里给出3种常用的实现方式,按简便程度排序:
方案1:直接用Module(最省事,效果和全局变量完全一致)
VB的Module天生就是用来存放全局共享成员的,定义后无需实例化、不需要加前缀就可以在整个项目里直接调用,和Form1自身成员的使用体验完全一致:
' 新建一个Module文件,比如命名为AppVariables.vb Public Module AppVariables ' 这里直接定义你需要的变量即可 Public Var1 As Integer Public UserName As String Public IsLogin As Boolean End Module
在Form1的任意Sub/Function里直接调用变量名就行,比如:
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load Var1 = 10 TextBox1.Text = UserName End Sub
方案2:使用Shared静态类(如果你一定要用Class实现)
给Variables类的所有变量加上Shared关键字,就可以不用实例化直接访问:
Public Class Variables ' 所有变量添加Shared修饰 Public Shared Var1 As Integer Public Shared UserName As String End Class
如果想和Form1自身成员一样不用加Variables.前缀,可以在Form1代码的最顶部加静态导入(VB14及以上版本支持):
Imports static 你的项目命名空间.Variables Public Class Form1 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click ' 直接用变量名即可 MsgBox(Var1) End Sub End Class
方案3:实例化成员(适合变量和Form1实例绑定的场景)
如果你的变量不需要全局共享,只属于当前Form1的实例,避免多个窗体实例共用变量冲突,可以在Form1里定义Variables的实例成员:
Public Class Form1 ' 定义为Form1的私有成员,命名可以简化方便调用 Private ReadOnly V As New Variables() Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click ' 用V.前缀调用,写法也很简洁 V.Var1 = 100 End Sub End Class
注意事项
- 用Module或者Shared类的共享变量,多线程场景下修改要加锁,避免出现线程安全问题
- 如果是多窗体实例的项目,优先选方案3,不会出现多个窗体互相干扰变量的问题
内容的提问来源于stack exchange,提问作者unovillegas
相关产品推荐
相关产品推荐

