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
Était-ce utile?

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()
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top