De retour contenu stringbuilder
-
05-09-2019 - |
Question
Trivial Je sais, mais simplement intéressé
J'ai une variable stringbuilder, que je veux retourner le contenu, mais si elle est vide, je veux revenir « | », donc il est préférable d'utiliser stringbuilder.tostring dans la déclaration comparer par exemple
If lReturnStringBuilder.ToString = String.Empty Then
lReturnStringBuilder.Append("|")
End If
return lreturnStringBuilder.tostring
ou est-il préférable de le convertir en une chaîne, et les comparer, même si cela signifie que le chargement d'une nouvelle variable et l'espace de chaîne pour l'allocation que par exemple
Dim lString as string = lReturnStringBuilder.ToString
if lString = string.empty then
lstring = "|"
end if
return lString
La solution
Ceci est le genre de micro-optimisation que vous avez vraiment tout simplement pas besoin de vous inquiéter. Cependant, je posterai ce que je pense est façon la plus élégante (et efficace) de le faire de toute façon:
Dim result = If(lReturnString.Length = 0, "|", lReturnString.ToString())
Cela permet de gagner la conversion d'un StringBuilder vide à une chaîne inutilement (ou alors appeler Append, qui est certainement pas nécessaire). Notez l'utilisation de la ligne instruction If (VB 9.0), qui fait pas évaluer les deux déclarations dans une affaire donnée, car il est une construction linguistique et non une fonction (exactement équivalente à une normale instruction if affectations de variables).
Autres conseils
Vous allouez le « espace de chaîne », peu importe ce que vous faites. La fonction ToString vous donne une chaîne, si vous attribuez la valeur à une variable ou non. Je suggère donc que vous seriez mieux loti attribuer la valeur de ToString () à une variable et tester ensuite cette valeur variable pour une chaîne vide. Quelque chose comme (désolé, je suis un gars C #, mais nous espérons que cela fonctionnera en VB):
Dim returnVal as String
returnVal = lReturnString.ToString()
If String.IsNullOrEmpty(returnVal) Then
returnVal = "|"
End If
Vous devriez éviter d'appeler ToString sur le StringBuilder puis ajouter plus à lui. Lorsque vous appelez la méthode ToString, vous obtenez la chaîne qui a été utilisée en interne par le StringBuilder. Si vous ajoutez ensuite plus au StringBuilder, il doit allouer une nouvelle chaîne.
Il suffit d'utiliser la propriété Longueur pour vérifier si le StringBuilder est vide, et si elle est vous n'avez pas d'impliquer le StringBuilder pour créer le résultat.
If lReturnStringBuilder.Length = 0 Then
Return "|"
Else
Return lReturnStringBuilder.ToString()
End If
Vous pouvez utiliser le Longueur propriété de votre objet StringBuilder. De cette façon, vous pouvez éviter d'appeler ToString () la première fois:
If lReturnStringBuilder.Length = 0 Then
lReturnStringBuilder.Append("|")
End If
Return lReturnStringBuilder.ToString()
ou
If lReturnStringBuilder.Length = 0 Then
Return "|"
End If
Return lReturnStringBuilder.ToString()