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 :

Nothing ou ""


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert Avatar de Danyel
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2005
    Messages
    1 699
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 699
    Par défaut Nothing ou ""
    Salut,

    Juste une petite question ou j'arrive pas a trouver le meilleur.
    Vaut-il mieux utiliser Nothing ou "" ???

    Je sais je cherche la petite bete, mais bon tant qu'a faire, autant faire bien

  2. #2
    Membre Expert
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Par défaut
    Citation Envoyé par Danyel
    Salut,

    Juste une petite question ou j'arrive pas a trouver le meilleur.
    Vaut-il mieux utiliser Nothing ou "" ???

    Je sais je cherche la petite bete, mais bon tant qu'a faire, autant faire bien
    C'est pas si c'est mieux ou pas ca dépend de ta variable.

    Nothing c'est pour détruire un objet et "" c'est pour "détruire" une chaine de caractère.

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim Obj as new ArrayList
    Obj = Nothing 'detruit le tableau
     
    Dim PassWord as String = "toto"
    PassWord = nothing 'a aucun sens ! et genèrera une erreur il faut faire :
    PassWord = ""
    Qui ne tente rien n'a rien !
    Ce qui ne nous tue pas nous rends plus fort !!
    Mon projet ZELDA en C++/Allegro
    http://www.tutoworld.com - Le Forum -
    Mes ressources Dotnet (cours, sources, tutos)
    --------------------------------------------
    + + =

    Ne pas oublier le Tag !

  3. #3
    Membre Expert Avatar de Danyel
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2005
    Messages
    1 699
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 699
    Par défaut
    Citation Envoyé par Aspic
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    PassWord = nothing 'a aucun sens ! et genèrera une erreur
    Hmmm es-tu vraiment sur de cela, car mettre nothing à un string ne provoque pas d'erreur meme en explicit et strict sur ON.
    Alors oui Nothing est de type object, mais realise la meme chose que "" à des chaines ou nombres ...
    idem pour string.text = nothing !!!

  4. #4
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Par défaut
    Pour ce genre de questions existencielles , il y a la méthode :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String.IsNullOrEmpty(string)
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  5. #5
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 202
    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 202
    Par défaut
    mettre un string à nothing n'est pas forcément utile, car string est certes un objet mais reste différent des vrais objets
    il sera bien désinstancié automatiquement comme les types par valeurs, meme sans le mettre à nothing ou à ""
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  6. #6
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Par défaut
    Citation Envoyé par Danyel
    Alors oui Nothing est de type object, mais realise la meme chose que "" à des chaines ou nombres ...
    idem pour string.text = nothing !!!
    Affecter String.Empty ou null à une chaine n'a pas du tout le même résultat. Dans beaucoup de situations, la distinction est importante entre une variable non initilialisée (cad null) et une variable contenant une chaine vide. Il y a cette même distinction dans les champs d'une table d'un SGBD.
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  7. #7
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 202
    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 202
    Par défaut
    dans un sgbd la différence est souvent stricte en effet
    mais en vb.net, un string non initialisé est à nothing, mais il est aussi = à ""
    enfin dim s as string => (s = "") renvoie true
    par contre, assigné à "" il n'est plus nothing
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    344
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 344
    Par défaut
    mais en vb.net, un string non initialisé est à nothing, mais il est aussi = à ""
    Moi, je n'en suis pas si sur. Nothing ou la chaine sont bien deux valeurs distinctes. La chaine vide n'est pas la même chose que RIEN.

    ATTENTION : toute variable doit être initialisée avant utilisation (c'est un principe fondamental de la programmation) car normalement on ne peut pas prévoir la valeur que notre variable aura avant .... Donc ton exemple repose sur un état ambigüe.

    Et tu réponds toi même à la question
    par contre, assigné à "" il n'est plus nothing
    Nothing <> ""

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