返回Stringbuilder内容

spa*_*eys 2 vb.net string stringbuilder

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

我有一个stringbuilder变量,我想返回它的内容,但是如果它是空的我想返回"|",那么最好在compare语句中使用stringbuilder.tostring,例如

   If lReturnStringBuilder.ToString = String.Empty Then
                lReturnStringBuilder.Append("|")
            End If
return lreturnStringBuilder.tostring
Run Code Online (Sandbox Code Playgroud)

或者最好将其转换为字符串,并进行比较,即使这意味着加载一个新变量并为其分配字符串空间,例如

Dim lString as string = lReturnStringBuilder.ToString
if lString = string.empty then
      lstring = "|"
end if
return lString
Run Code Online (Sandbox Code Playgroud)

Nol*_*rin 8

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

Dim result = If(lReturnString.Length = 0, "|", lReturnString.ToString())
Run Code Online (Sandbox Code Playgroud)

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