返回Stringbuilder内容

时间:2009-02-21 18:15:50

标签: vb.net string stringbuilder

琐事我知道,但只是感兴趣

我有一个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

4 个答案:

答案 0 :(得分:8)

这是一种你真正不需要担心的微优化。但是,无论如何,我会发布我认为最优雅(也是最有效)的方式:

Dim result = If(lReturnString.Length = 0, "|", lReturnString.ToString())

这样可以节省不必要地将空StringBuilder转换为字符串(或者然后调用Append,这绝对不是必需的)。注意使用内联If语句(VB 9.0),它在任何一种情况下都评估两个语句,因为它是一个语言结构而不是一个函数(完全等同于一个普通的If语句,变量赋值)。

答案 1 :(得分:2)

无论你做什么,都要分配“字符串空间”。无论是否将值赋给变量,ToString函数都会为您提供一个字符串。所以我建议您最好将ToString()的值赋给变量,然后测试该变量值为空字符串。有点像(对不起,我是C#家伙,但希望这可以在VB中使用):

Dim returnVal as String
returnVal = lReturnString.ToString()
If String.IsNullOrEmpty(returnVal) Then
  returnVal = "|"
End If

答案 2 :(得分:2)

你应该避免在StringBuilder上调用ToString,然后向它添加更多内容。当您调用ToString方法时,您将获得StringBuilder内部使用的字符串。如果然后将更多内容附加到StringBuilder,则必须分配一个新字符串。

只需使用Length属性检查StringBuilder是否为空,如果是,则不必让StringBuilder参与创建结果。

If lReturnStringBuilder.Length = 0 Then
   Return "|"
Else
   Return lReturnStringBuilder.ToString()
End If

答案 3 :(得分:1)

您可以使用StringBuilder对象的Length属性。这样你就可以避免第一次调用ToString():

If lReturnStringBuilder.Length = 0 Then
   lReturnStringBuilder.Append("|")
End If

Return lReturnStringBuilder.ToString()

If lReturnStringBuilder.Length = 0 Then
   Return "|"
End If

Return lReturnStringBuilder.ToString()