如何将函数的结果转换为变量,以便我可以再次使用它?

时间:2012-07-29 17:38:12

标签: vb.net

以下是我的功能示例:

Public Class GlobalFunctions

Public Shared Function CreateNewDatabase(ByVal MyDomainName As String, ByVal NewDatabaseName As String, ByVal StatusBoxName As ListBox)

    Try

        Dim MyWorkingDirectory As String = "C:\mytest1\"
        Dim MyFileName As String = "mycmd.exe"

        If File.Exists(MyWorkingDirectory & MyFileName) Then

            'Run mycmd

            'Here are my results
            Dim Result1 As String = "r2"
            Dim Result2 As String = "r2"
            Dim Result3 As String = "r3"

        End If

    Catch ex As Exception

        MsgBox(ex.Message)

    End Try

    Return True

End Function

End Class

基本上我需要做的就是运行我的功能&然后能够在我的下一个函数中使用结果..类似于:

    GlobalFunctions.CreateNewDatabase(DomainName.Text, MyDbName, StatusListBox)
    MsgBox(Result1)
    MsgBox(Result2)
    MsgBox(Result3)

非常感谢任何帮助;)

3 个答案:

答案 0 :(得分:0)

您应该在类中创建属性Result1,Result2,Result3并在CreateNewDatabase()中设置它们。然后你可以将它们作为GlobalFunctions.Result1

但它看起来很糟糕。

答案 1 :(得分:0)

这里有两个主要选项。第一种是返回稍后要使用的值。为此,您可以创建一个包含要使用的三个值的属性的类,或者如果此函数的使用有限,您可以考虑返回Tuple(基于您的示例,{{1} }})

另一个选项是创建类级属性并从Tuple(Of String, String, String)函数设置其支持字段。这样做的主要缺点是这些值将被以后对该函数的任何调用覆盖。它还通过要求程序员知道方法设置了三个属性,而不是更明显地从函数返回具有三个属性的对象,在API中引入了一些可发现性问题。

答案 2 :(得分:-1)

嗯,最简单的方法是,将它们声明为全局变量,实际上似乎不太受欢迎。

Public Class Form1

 Dim Result1 As String 
 Dim Result2 As String 
 Dim Result3 As String

GlobalFunctions.CreateNewDatabase(DomainName.Text, MyDbName, StatusListBox)
MsgBox(Result1)
MsgBox(Result2)
MsgBox(Result3)


etc..
etc...

end class

不是最漂亮的方式,但它会完成工作。