C#形式をVBに変換します
-
28-09-2019 - |
質問
これは皆さんにとって簡単な質問だと確信していますが、この開発者が何をしているのかわかりません。
name = String.Format(MyStringBuilder + "");
これをVBに変換すると、「Operator +はタイプSystem.Text.StringBuilderと文字列について定義されていません」というメッセージが表示されます。私が使用している場合も同じことです。
解決
最も厳しい意味では、元のコードのMyStringBuilderはヌルのインスタンスである可能性があり、その時点で.toString()に明示的な呼び出しを行うと、例外がスローされます。ただし、提供されるコードサンプルは適切に実行されます。 VBでは、言いたいかもしれません
Dim name As String
If MyStringBuilder Is Nothing Then
name = String.Empty
Else
name = MyStringBuilder.ToString()
End If
他のヒント
それを書いた人は、MyStringBuilderの暗黙的な変換を、空の文字列と組み合わせて +演算子を使用して文字列に強制しようとしているように見えます。
VBでこの割り当てを実行するには、次のことだけが必要です。
name = MyStringBuilder.ToString()
string.formatに1つの引数だけを渡すだけで、それは私には意味がありません。
stringbuilderに「」を追加するだけで、文字列に強制します。
name = MyStringBuilder.ToString();
C#でこれを行う方法でしょう。そのステートメントをVBに変換することは、読みやすくする必要があります。
mystringbuilder.toString()を使用します。それは問題を解決します。
StringBuilderオブジェクトと文字列を連結しようとしています - それは機能しません:)
name = String.Format(MyStringBuilder.ToString() + "");
これは正しくコンパイルする必要があります。
vb.netでは、「+」の代わりに「&」を使用します
この行:
name = String.Format(MyStringBuilder + "");
「+」演算子を使用するために、mystringbuilderの暗黙のキャスト(toString()メソッドを使用)を引き起こしています。それは次のものと同じです:
name = String.Format(MyStringBuilder.ToString() + "");
これは同じです
name = MyStringBuilder.ToString();
これはvb.netでこれになります:
name = MyStringBuilder.ToString()