Tornando contenuti StringBuilder
-
05-09-2019 - |
Domanda
Trivial lo so, ma solo interessati
Ho una variabile StringBuilder, che voglio restituire il contenuto di, ma se è vuota Voglio tornare "|", così è meglio usare stringbuilder.tostring nella dichiarazione confrontare per esempio
If lReturnStringBuilder.ToString = String.Empty Then
lReturnStringBuilder.Append("|")
End If
return lreturnStringBuilder.tostring
o è meglio convertirlo in una stringa, e confrontare tale, anche se ciò significa caricare una nuova variabile e l'allocazione dello spazio stringa che per esempio
Dim lString as string = lReturnStringBuilder.ToString
if lString = string.empty then
lstring = "|"
end if
return lString
Soluzione
Questo è il tipo di micro-ottimizzazione che davvero proprio non c'è bisogno di preoccuparsi. Tuttavia, invierò quello che io credo sia più elegante (ed efficiente) modo di fare questo comunque:
Dim result = If(lReturnString.Length = 0, "|", lReturnString.ToString())
Questo consente di risparmiare la conversione di uno StringBuilder vuoto in una stringa inutilmente (o quindi chiamando Append, che non è assolutamente necessario). Si noti l'uso della linea If (VB 9.0), che fa non valutare sia le dichiarazioni in un solo caso, in quanto è un costrutto del linguaggio e non una funzione (esattamente equivalente ad una normale Se dichiarazione con assegnazioni delle variabili).
Altri suggerimenti
Si assegnano lo "spazio stringa" indipendentemente da quello che fai. La funzione ToString ti dà una stringa, se si assegna il valore di una variabile o meno. Quindi, vorrei suggerire che si sarebbe migliore fuori assegnando il valore di ToString () a una variabile e poi prova il valore variabile per una stringa vuota. Qualcosa di simile (mi dispiace, io sono un C # ragazzo, ma spero che questo funzionerà in VB):
Dim returnVal as String
returnVal = lReturnString.ToString()
If String.IsNullOrEmpty(returnVal) Then
returnVal = "|"
End If
Si dovrebbe evitare di chiamare ToString sulla StringBuilder e quindi aggiungere più ad esso. Quando si chiama il metodo ToString, si ottiene la stringa che è stato utilizzato internamente dal StringBuilder. Se quindi aggiungere di più per lo StringBuilder, deve allocare una nuova stringa.
utilizzare solo la proprietà lunghezza per verificare se lo StringBuilder è vuoto, e se è non si dispone di coinvolgere lo StringBuilder per creare il risultato.
If lReturnStringBuilder.Length = 0 Then
Return "|"
Else
Return lReturnStringBuilder.ToString()
End If
È possibile utilizzare il Lunghezza di proprietà del vostro oggetto StringBuilder. In questo modo si può evitare di chiamare ToString () per la prima volta:
If lReturnStringBuilder.Length = 0 Then
lReturnStringBuilder.Append("|")
End If
Return lReturnStringBuilder.ToString()
o
If lReturnStringBuilder.Length = 0 Then
Return "|"
End If
Return lReturnStringBuilder.ToString()