2012-07-29 49 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

相關問題