Тривиально я знаю, но просто интересно
У меня есть переменная 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 в строку (или последующего вызова Append, что определенно не требуется). Обратите внимание на использование встроенного оператора If (VB 9.0), который не оценивает оба оператора ни в одном случае, так как это языковая конструкция, а не функция (полностью эквивалентная обычному оператору If с присваиванием переменных).
Комментариев нет:
Отправить комментарий