以下是我的功能示例:
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)
非常感谢任何帮助;)
答案 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
不是最漂亮的方式,但它会完成工作。