文字列を返すVB.Net関数が実際に単一の文字のみを返すのはなぜですか?
質問
文字列を返す関数を呼び出していますが、実際に返されるはずの文字列の最初の文字を返しているだけです。
これは、私が経験している問題を再現するためのサンプルコードです。
Public Function GetSomeStringValue(Value as Integer) As String
... Code Goes here
Return Some_Multicharacter_string
End Function
関数呼び出しは次のようになります:
SomeStringValue = GetSomeStringValue(Value)
これが文字列全体を返さないのはなぜですか?
解決
注:この回答は、もともとOPであるKibbeeが自己回答として作成したものです。ただし、実際の個別の回答としてではなく、質問の本文に記載されています。 OPは、モデレーターを含む他のユーザーによるサイトルールに従って再投稿を繰り返しリクエストすることを拒否したため、自分で再投稿しています。
100種類のことを試して、コードをリファクタリングし、デバッガーで何度もコードをステップ実行し、同僚に問題を調査してもらった後、私はついに天才で答えを見つけました。
コードをリファクタリングしていたある時点で、Valueパラメーターを削除するように関数を変更し、次のようにしました。
Public Function GetSomeStringValue() As String
... Code Goes here
Return Some_Multicharacter_String
End Function
ただし、関数を呼び出すときに渡したパラメーターを削除するのを怠りました:
SomeStringValue = GetSomeStringValue(Value)
コンパイラーは、私がやっていることを括弧なしで関数を呼び出すと解釈したので、文句を言いませんでした。これは、VB6時代からのレガシー機能です。次に、Valueパラメーターが、関数から返された文字列(別名文字配列)の配列インデックスに変換されました。
パラメータを削除しましたが、すべて正常に機能しました:
SomeStringValue = GetSomeStringValue()
これを投稿しているのは、他の人が問題に遭遇したとき/それを認識し、私よりもはるかに迅速に問題を解決できるようにするためです。解決するのにかなり時間がかかったので、他の人の時間を少しでも節約できると思います。
所属していません StackOverflow