在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