web-dev-qa-db-fra.com

CStr () Str () .ToString ()

Je veux juste savoir quelle est la différence entre les fonctions CStr () et Str () et aussi .ToString ()? Avec le code fourni ci-dessous, quelle est la différence entre les trois?

Label1.Text = CStr(Int(Rnd() * 10))

et

Label1.Text = Str(Int(Rnd() * 10))

et

Label1.Text = Int(Rnd() * 10).ToString

Quand j'ai utilisé cette condition

If Label1.Text = "7" Then
     'Some code here
End If

... la fonction Str () ne fonctionnait pas ici. Quelle différence cela fait-il? Merci d'avance :))

26
aer

ToString appellera la fonction .ToString() sur une instance particulière . En pratique, cela signifie qu'elle lève une exception si l'objet dans Question est Nothing. Cependant, vous pouvez implémenter .ToString() dans vos propres classes Pour obtenir une représentation sous forme de chaîne de votre objet, alors que CTypeCStr fonctionne uniquement avec les classes et les interfaces intégrées.

CStr et CType (_/expression, String) sont exactement équivalents (je ne suis pas Sûr où l'autre affiche a eu l'idée que CStr est plus rapide). Mais ils ne sont pas vraiment des fonctions, ce sont des directives de compilation qui vont émettre un code très différent en fonction de la déclaration de expression. Dans la plupart des cas , Ces directives appellent un groupe de code interne VB qui tente d'obtenir Obtenir une chaîne raisonnable à partir de expression.

DirectCast (expression, String) suppose que l'expression dans Question est vraiment une String et la lance. C'est la plus rapide de toutes Ces options, mais elle lève une exception si expression est autre chose que Autre qu'une String.

32
John Woo

En tant que complément à l'environnement VBA/VB6 où nous n'avons pas ToString():

  • Str() n'est pas au courant de la représentation internationale. Le séparateur décimal est toujours un point (.).

    Comme déjà mentionné ci-dessus, il préfixe la chaîne résultante avec un blanc en cas de valeurs positives.

  • Il existe également Str$(). La différence par rapport à Str() correspond au type de retour:

    Str() renvoie une variante de type chaîne, Str$() renvoie une chaîne.

    Et Str$() est légèrement plus rapide que Str().

  • CStr() en revanche est au courant de la représentation internationale. Le séparateur décimal dépend des paramètres internationaux de Windows.

    Aucun préfixage supplémentaire pour les valeurs positives ne sera effectué.

Donc, si vous devez convertir un type de valeur en chaîne et que vous devez assurez un point comme séparateur décimal et qu’il n’y a pas de préfixe vide , utilisez la syntaxe suivante:

Dim d As Double
d = 123.456

Dim s As String
s = Trim(Str$(d))
2

Je ne sais pas à propos de ToString () ni à propos de VB.NET

Mais dans VB6 (Visual Basic 6):

Cstr () et Str () convertissent les valeurs en chaîne. mais Cstr () est meilleur parce que:

Str (): Après la conversion en chaîne, il ajoute 1 espace avant les nombres positifs. par exemple: Str (22)> "22"

Cstr (): Après la conversion en chaîne, il n'ajoute jamais l'espace supplémentaire indiqué ci-dessus - Pour obtenir un résultat optimal, utilisez-le avec Trim () - Trim (Cstr (Variable))

1
Mahdi Jazini

Bien que ce ne soit pas un problème dans le code de la question, il est important de mentionner que Str() ne convertit que les expressions numériques en chaîne, donne une erreur dans les autres cas. Ne l'utilisez donc pas pour convertir les valeurs d'une cellule.

0
robotik