仅在 VB.net 中为类声明全局变量

用户8666372

我想知道在类级别为类的过程使用变量的足够方法是什么。我有两个过程位于同一类中,并且大多数变量对于这两个过程都是通用的。我如何声明这个变量。

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
the_lotus

它们是相同的变量名称,但会根据您调用的方法包含不同的信息。将这些变量保留在您的方法中。仅共享包含相同信息的变量。

相反,我从两种方法中提取了类似的逻辑并将其放入另一种方法中。这更有意义。

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 不应该像那样公开,我认为没有理由共享这些。但是,我是在对您的程序的了解非常有限的情况下这么说的。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章