在VB.net中为唯一类声明全局变量
我想知道在类的过程中使用类级变量的方法是否足够。我有两个过程位于同一个类中,两个过程的大多数变量都是公共的。如何声明这些变量在VB.net中为唯一类声明全局变量,vb.net,class,global-variables,Vb.net,Class,Global Variables,我想知道在类的过程中使用类级变量的方法是否足够。我有两个过程位于同一个类中,两个过程的大多数变量都是公共的。如何声明这些变量 Public Class modBuild Public Shared Sub GetParameterPAOut() Dim PA As IScrSubVarGroup Dim SubvarGroups As IScrNamedObjectList Dim SubvarGroup As IScrSubVarGr
Public Class modBuild
Public Shared Sub GetParameterPAOut()
Dim PA As IScrSubVarGroup
Dim SubvarGroups As IScrNamedObjectList
Dim SubvarGroup As IScrSubVarGroup
Dim nSubvarGroup As Integer
Dim Subvars As IScrNamedObjectList
Dim Subvar As IScrSubVar
Dim nSubvar As Integer
PA = Mdl.findElement("$G_PA", False)
Subvars = PA.getSubvarList(False)
nSubvar = Subvars.count
SubvarGroups = PA.getSubvarGroupList(False)
nSubvarGroup = SubvarGroups.count
Try
For i As Integer = 0 To nSubvar - 1
Subvar = Subvars.item(i)
If Subvar.intent.val = 0 Then
dgvBuildSubvarPa.Rows.Add("Main", Subvar.name)
End If
Next
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
Public Shared Sub GetParameterMPOut()
Dim MP As IScrSubVarGroup
Dim SubvarGroups As IScrNamedObjectList
Dim SubvarGroup As IScrSubVarGroup
Dim nSubvarGroup As Integer
Dim Subvars As IScrNamedObjectList
Dim Subvar As IScrSubVar
Dim nSubvar As Integer
MP = Mdl.findElement("$G_MP", False)
Subvars = MP.getSubvarList(False)
nSubvar = Subvars.count
SubvarGroups = MP.getSubvarGroupList(False)
nSubvarGroup = SubvarGroups.count
Try
For i As Integer = 0 To nSubvar - 1
Subvar = Subvars.item(i)
If Subvar.intent.val = 0 Then
dgvBuildSubvarMp.Rows.Add("Main", Subvar.name)
End If
Next
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
End Class
特别是我想在类的顶部和过程的外部使用以下变量
Public Class modBuild
Dim PA As IScrSubVarGroup
Dim MP As IScrSubVarGroup
Dim SubvarGroups As IScrNamedObjectList
Dim SubvarGroup As IScrSubVarGroup
Dim nSubvarGroup As Integer
Dim Subvars As IScrNamedObjectList
Dim Subvar As IScrSubVar
Dim nSubvar As Integer
Public Shared Sub GetParameterPAOut()
PA = Mdl.findElement("$G_PA", False)
Subvars = PA.getSubvarList(False)
nSubvar = Subvars.count
SubvarGroups = PA.getSubvarGroupList(False)
nSubvarGroup = SubvarGroups.count
Try
For i As Integer = 0 To nSubvar - 1
Subvar = Subvars.item(i)
If Subvar.intent.val = 0 Then
dgvBuildSubvarPa.Rows.Add("Main", Subvar.name)
End If
Next
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
Public Shared Sub GetParameterMPOut()
Dim MP As IScrSubVarGroup
Dim SubvarGroups As IScrNamedObjectList
Dim SubvarGroup As IScrSubVarGroup
Dim nSubvarGroup As Integer
Dim Subvars As IScrNamedObjectList
Dim Subvar As IScrSubVar
Dim nSubvar As Integer
MP = Mdl.findElement("$G_MP", False)
Subvars = MP.getSubvarList(False)
nSubvar = Subvars.count
SubvarGroups = MP.getSubvarGroupList(False)
nSubvarGroup = SubvarGroups.count
Try
For i As Integer = 0 To nSubvar - 1
Subvar = Subvars.item(i)
If Subvar.intent.val = 0 Then
dgvBuildSubvarMp.Rows.Add("Main", Subvar.name)
End If
Next
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
End Class
如果只想访问类中的字段或属性,请将它们声明为
如果要从共享的
获取参数paout
访问它们,则需要在方法中包含类的实例modBuild
,或者使字段也共享它们是相同的变量名,但根据调用的方法包含不同的信息。将这些变量保留在方法中。仅当变量包含相同的信息时共享变量
相反,我从两个方法中提取相似的逻辑,并将其放在另一个方法中。这更有意义
Public Class modBuild
Public Shared Sub GetParameterPAOut()
Dim PA As IScrSubVarGroup
PA = Mdl.findElement("$G_PA", False)
BuildGridView(PA, dgvBuildSubvarPa)
End Sub
Public Shared Sub GetParameterMPOut()
Dim MP As IScrSubVarGroup
MP = Mdl.findElement("$G_MP", False)
BuildGridView(MP, dgvBuildSubvarMp)
End Sub
Private Shared Sub BuildGridView(ByVal e As IScrSubVarGroup, ByVal dgv As DataGridView)
Dim SubvarGroups As IScrNamedObjectList
Dim SubvarGroup As IScrSubVarGroup
Dim nSubvarGroup As Integer
Dim Subvars As IScrNamedObjectList
Dim Subvar As IScrSubVar
Dim nSubvar As Integer
Subvars = e.getSubvarList(False)
nSubvar = Subvars.count
SubvarGroups = e.getSubvarGroupList(False)
nSubvarGroup = SubvarGroups.count
Try
For i As Integer = 0 To nSubvar - 1
Subvar = Subvars.item(i)
If Subvar.intent.val = 0 Then
dgv.Rows.Add("Main", Subvar.name)
End If
Next
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
End Class
从逻辑上看,这让我想知道为什么它甚至出现在这样一个类中。你的dgv不应该像那样公开,我也不认为有理由把它们作为共享。但是,我是在对你的程序了解非常有限的情况下说这番话的
Public Class modBuild
Public Shared Sub GetParameterPAOut()
Dim PA As IScrSubVarGroup
PA = Mdl.findElement("$G_PA", False)
BuildGridView(PA, dgvBuildSubvarPa)
End Sub
Public Shared Sub GetParameterMPOut()
Dim MP As IScrSubVarGroup
MP = Mdl.findElement("$G_MP", False)
BuildGridView(MP, dgvBuildSubvarMp)
End Sub
Private Shared Sub BuildGridView(ByVal e As IScrSubVarGroup, ByVal dgv As DataGridView)
Dim SubvarGroups As IScrNamedObjectList
Dim SubvarGroup As IScrSubVarGroup
Dim nSubvarGroup As Integer
Dim Subvars As IScrNamedObjectList
Dim Subvar As IScrSubVar
Dim nSubvar As Integer
Subvars = e.getSubvarList(False)
nSubvar = Subvars.count
SubvarGroups = e.getSubvarGroupList(False)
nSubvarGroup = SubvarGroups.count
Try
For i As Integer = 0 To nSubvar - 1
Subvar = Subvars.item(i)
If Subvar.intent.val = 0 Then
dgv.Rows.Add("Main", Subvar.name)
End If
Next
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
End Class