IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

single.parse ou csng ?


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    349
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 349
    Par défaut single.parse ou csng ?
    Salut,

    j'aurai voulu savoir quelle fonction utilisée car je dois convertir un chiffre venant d'une textbox pour l'envoyer dans une base de donnée qui a un type single ou tout simplement effectué des calculs.

    J'ai l'impression que single.parse et csng font la même chose mais que csng vien de vb6 ?

    edit : je comprends pas trop la difference entre csng et single.parse

  2. #2
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    il n'y a aucune différence

    csng vient en effet de vb6, mais il fait single.parse

    il y a plein de choses qui viennent de vb6, certains sont à éviter (comme les open file car ils retirent quelque chose au langage) et d'autres qu'on peut utiliser sans trop de soucis (cint, isnumeric, mid ...)
    enfin dans les 2 cas soit c'est devenu des mots clés de vb qui sont compris du compilateur, soit des fonctions d'une dll du framework visualbasic.compatibility, qui retombe donc sur du code du framework (comme par exemple, le code de ucase(unstring) ne fait qu'appeler unstring.toupper)
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    349
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 349
    Par défaut
    merci pour cette reponse precise et concice

  4. #4
    Membre Expert
    Avatar de Sehnsucht
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    847
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Octobre 2008
    Messages : 847
    Par défaut
    Bonsoir,

    Personnellement, j'ai beau chercher avec reflector, je ne vois pas à quel moment CSng fait appel à Single.Parse

    Après j'ai parfaitement conscience que reflector n'est pas parfait non plus, mais de ce que j'ai pu voir, dans le code CSng "converti" est en fait un appel à Conversions.ToSingle.
    La chose perturbante est que son code présente l'instruction CSng (celle-ci non convertie en Conversions.ToSingle) elle même remplacée par (float) si je mets en C#

    D'un autre côté Single.Parse appelle Number.ParseSingle et là s'en suit une méthode unsafe (qui en utilisent d'autres)

    Un supplément d'information ne me dérangerait pas (même si c'est pour me dire que je me suis planté )

    Cordialement !

  5. #5
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    csng équivaut à ctype(..,single)
    ctype n'existe pas non plus dans reflector je pense, c'est un mot clé du langage vb
    les compilateurs vb.net et c# connaissent chacun des mots clés (comme le switch de c# ou select case de vb.net) et certains sont parfois convertis en code .net du framework (ca doit etre le cas de csng qui à mon avis se transforme en single.parse ou en autre chose qui au final retombe là desuss)
    et pour voir cette transformation, il faut écrire le code, compiler (en release), et voir le code compilé via reflector

    edit :
    conversions.tosingle fait un appel à csng sur la variable passé au double.tryparse, et en c# le csng est transformé en (float) num (ce qui équivaut au directcast de vb.net)
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  6. #6
    Membre Expert
    Avatar de Sehnsucht
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    847
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Octobre 2008
    Messages : 847
    Par défaut
    CType existe, il est transformé en appel à Conversions.ChangeType ; tout comme beaucoup des anciennes méthodes VB6 orphelines (entendre par là non rattachées à une classe) qui le sont désormais même si les classes statiques (ou Module en VB.Net) en question sont décorées d'un attribut qui permet de ne pas avoir à les utiliser nommément

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    349
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 349
    Par défaut
    apparement csng serait plus rapide

    http://msdn.microsoft.com/en-us/libr...8VS.85%29.aspx

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Probleme de parsing de chaine, tronquer une chaine
    Par Voodo'o_d'ool dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 06/08/2008, 11h28
  2. Parsing et caractères spéciaux
    Par Shogun dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 29/10/2004, 17h43
  3. conversion String en Date (parse trop permissif)
    Par ciloulou dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 13/09/2004, 18h36
  4. Pb Linker (Single-threaded / Multithreaded)
    Par olive_le_malin dans le forum MFC
    Réponses: 4
    Dernier message: 26/08/2004, 17h30
  5. [XML] Améliorer le parsing
    Par GLDavid dans le forum Modules
    Réponses: 3
    Dernier message: 19/07/2004, 16h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo