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
È stato utile?

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()
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top