0

这是我的功能的一个例子:

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)

任何帮助将非常感激 ;)

4

3 回答 3

0

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

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

于 2012-07-29T17:51:51.193 回答
0

您应该在您的类中创建属性 Result1、Result2、Result3 并在 CreateNewDatabase() 中设置它们。然后你可以得到它们GlobalFunctions.Result1

但它看起来很可怕。

于 2012-07-29T17:45:29.437 回答
-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

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

于 2012-07-30T16:14:04.757 回答