2017-02-07 3 views
0

を文字列を取得する関数に...私は、これは比較的簡単な質問だと思うが、私はこれで小さな問題を抱えてきたように思えるバック

をパラメータを渡す私は私がしようとフォームを持っています関数にパラメータを渡すと値

ParmValue = "Juarez" 

dim CheckValue = GetValueFromFunction(parmValue) 

Private Sub GetValueFromFunction (ByVal Optional ValueFromFunc as string) 
    'do stuff 
    getValueFromFunction = "OK" 

    or 

    getValueFromFuncton="NOTOK" 

    return GetValueFromFunction 
End sub 

バックリターンで文字列を取得するために基本的に私はCheckValueはその値を保持するように戻って私のGetValueFromFunctionから文字列値を取得していますよ。私は間違って何をしていますか?

+2

実際のコードは何ですか?この古くて醜いvb6構文と.NETを混在させないでください。戻り値を返し、メソッドに代入しないでください。メソッドのローカル変数を宣言します。あなたのものをして、その変数に正しい値を割り当てます。最後にそれを返します。 –

+1

オプションのparamがデフォルト値を持たないのでコンパイルできません。オプションstrictでは戻り型を宣言する必要があります。エラーが発生していますか? – Plutonix

+0

@TimSchmelter - 私はここで同じことをしようとしているので、mainy vb6を実行します – BobSki

答えて

4

Subから返品することはできません。

Function
Private Function GetValueFromFunction(Optional ValueFromFunc as String = Nothing) As String 
    Dim returnValue As String 
    'do stuff... 
    If someCondition Then 
     returnValue = "OK" 
    Else 
     returnValue = "NOTOK" 
    End If 

    Return returnValue 
End Function 

Subが(それはより多くのアクションのようなものだ)何かを返さない方法であるのに対し、何かを返すメソッドである:それはFunctionなければなりません。 C#では、Subvoidを返します。

+0

'オプションのパラメータはデフォルト値を指定する必要があります。 ' – Plutonix

+2

@Plutonix:ありがとう –

+0

ありがとう - 素晴らしい作品! – BobSki

1

値を返すので、Functionを使用する必要があります。 Sub(手順)が宣言されているため、コードが間違っています。

Functionの正しい使用である:

Private Function GetValueFromFunction (ByVal ValueFromFunc As String) As String 
    ' do stuff 
    GetValueFromFunction = "OK" 

    ' or 

    GetValueFromFunction = "NOTOK" 

    Return GetValueFromFunction 
End Function 

As Stringの使用。これはあなたのFunctionの返品タイプを指示するためのものです。

関連する問題