平凡的我知道,但只是感兴趣

我有一个StringBuilder变量,我要回的内容,但如果它是空的我想回到“|”,因此,它是最好的比较语句e.g使用stringbuilder.tostring

   If lReturnStringBuilder.ToString = String.Empty Then
                lReturnStringBuilder.Append("|")
            End If
return lreturnStringBuilder.tostring

或者是它最好将其转换为字符串,并比较,尽管这意味着加载了一个新的变量和该e.g所述分配字符串空间

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转换为字符串不必要地(或然后调用追加,这是绝对不是必需的)。注意使用内嵌的if语句(VB 9.0),这确实的的任何一种情况下同时评估报告,因为它是一个语言结构而非函数(完全等同于正常的if语句变量赋值)。

其他提示

您分配“字符串空间”无论你做什么。 ToString函数为您提供了一个字符串,无论你的值赋给变量或没有。所以,我建议你最好是去的ToString()的值赋值给一个变量,然后测试该变量值一个空字符串。喜欢的东西(对不起,我是一个C#的家伙,但希望这将在VB中工作):

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

您应该避免呼吁的StringBuilder的ToString然后追加更多的东西。当你调用ToString方法,你得到的是由StringBuilder的内部使用的字符串。如果再追加更多到StringBuilder,它分配一个新的字符串。

只要使用length属性来检查StringBuilder的是空的,如果你没有涉及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