StringBuilderの内容を返します
-
05-09-2019 - |
質問
些細な私は知っているが、ちょうど興味
「|」私はの内容を返したいという、StringBuilderの変数を持っているが、それが空の場合、私は返すようにしたいので、比較する声明例えばにstringbuilder.tostringを使用することが最善です。
If lReturnStringBuilder.ToString = String.Empty Then
lReturnStringBuilder.Append("|")
End If
return lreturnStringBuilder.tostring
またはベスト、それはそれを文字列に変換し、それは新しい変数とその例えばのために割り当てる文字列のスペースをロードする意味にもかかわらず、それを比較することです。
Dim lString as string = lReturnStringBuilder.ToString
if lString = string.empty then
lstring = "|"
end if
return lString
解決
これは、あなたが本当にただ心配する必要はありませんマイクロ最適化の一種です。しかし、私はとにかく、私が最もエレガントな(かつ効率的)だと思うだろうか、これを行う方法を掲載します。
Dim result = If(lReturnString.Length = 0, "|", lReturnString.ToString())
これは、不必要な文字列に空のStringBuilderを変換(またはその後間違い必要とされない追加し、呼び出し)を保存します。声明(VB 9.0)場合に文の場合、それはなく言語構造の通常のとまったく同等の機能(あるとしてのの、いずれかの場合には両方のステートメントを評価しない、インラインでの使用に注意してください変数の代入)。
他のヒント
あなたは関係なく、あなたが何をすべきかの「文字列領域」を割り当てています。 ToString関数は、あなたが変数に値を割り当てるかどうかの文字列を与えます。だから私は、あなたが変数にToStringメソッド()の値を代入して、空の文字列のために、その変数値をテストオフ最高のだろうと示唆しています。以下のような何かが(申し訳ありませんが、私はC#の男だけど、うまくいけば、これはVBで動作します):
Dim returnVal as String
returnVal = lReturnString.ToString()
If String.IsNullOrEmpty(returnVal) Then
returnVal = "|"
End If
あなたはStringBuilderの上のToStringメソッドを呼び出さないし、それによりを追加する必要があります。あなたはToStringメソッドを呼び出すときは、StringBuilderので内部的に使用された文字列を取得します。あなたは、その後のStringBuilderに、よりを追加した場合、それは新しい文字列を割り当てる必要があります。
だけのStringBuilderが空であるかどうかを確認するために、Lengthプロパティを使用し、それがある場合は、結果を作成するためのStringBuilderが関与する必要はありません。
If lReturnStringBuilder.Length = 0 Then
Return "|"
Else
Return lReturnStringBuilder.ToString()
End If
あなたは長を使用することができますあなたのStringBuilderオブジェクトのプロパティ。あなたはToStringメソッド(呼び出しを避けることができますこの方法で)初めてます:
If lReturnStringBuilder.Length = 0 Then
lReturnStringBuilder.Append("|")
End If
Return lReturnStringBuilder.ToString()
または
If lReturnStringBuilder.Length = 0 Then
Return "|"
End If
Return lReturnStringBuilder.ToString()