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

ここには 2 つの主なオプションがあります。1 つ目は、後で使用する値を返すことです。これを行うには、使用する 3 つの値のプロパティを持つクラスを作成するか、この関数の使用が制限されている場合は、Tuple(例に基づいて a Tuple(Of String, String, String))を返すことを検討できます。

もう 1 つのオプションは、クラス レベルのプロパティを作成し、そのバッキング フィールドをCreateNewDatabase関数から設定することです。これの主な欠点は、これらの値が関数への将来の呼び出しによって上書きされることです。また、関数から 3 つのプロパティを持つオブジェクトをより明確に返すのではなく、メソッドによって 3 つのプロパティが設定されていることをプログラマが知る必要があるため、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 に答える