2012-07-29 47 views
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) 

任何帮助将不胜感激;)

回答

0

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

但它看起来很可怕。

0

这里有两个主要选项。首先是返回稍后要使用的值。要做到这一点,您可以创建一个具有您要使用的三个值的属性的类,或者如果此功能的用途有限,则可以考虑返回一个Tuple(根据您的示例,Tuple(Of String, String, String)

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

-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 

不是最简单的方法,但它会完成工作。

+0

有一些很好的理由,为什么这不是“太受欢迎”。以您建议的方式使用全局变量不是远程线程安全的。另外,在你的例子中你根本没有使用全局变量 - 你正在使用私有成员变量。 – 2012-07-30 17:05:57

相关问题