質問

些細な私は知っているが、ちょうど興味

「|」

私はの内容を返したいという、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()
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top