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 :

Is Vs = and nothing


Sujet :

VB.NET

  1. #1
    Nouveau membre du Club
    Inscrit en
    Février 2008
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 104
    Points : 34
    Points
    34
    Par défaut Is Vs = and nothing
    Bonjour,

    Voici un exemple très simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
            Dim d As Object = Nothing
     
            If d Is Nothing Then
                MsgBox("1")
            End If
            If d = Nothing Then
                MsgBox("2")
            End If
            If 0 = Nothing Then
                MsgBox("3")
            End If
    Affiche 1,2 et 3.

    Quelle est la différence entre "is" et "=" ?
    Nothing = 0 ?

    Merci

  2. #2
    Membre actif Avatar de yroubag
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2004
    Messages
    162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mai 2004
    Messages : 162
    Points : 224
    Points
    224
    Yroubag
    Bien poser les questions, c’est tout un art.
    Où tout dépend, bien sûr, de la réponse que l’on veut obtenir. -André Frossard

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

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    = est fait pour les types par valeur (integer, string, boolean, date ...), il regarde si les valeurs sont égales
    is est fait pour les types objets (toutes les classes), il regarde si les références pointent vers la meme variable (si tu as 2 instances d'une classe avec les meme valeur, is retournera false car ce sont 2 variables différentes)

    ca m'étonne meme que le compilateur te laisse écrire d = Nothing

    par contre 0 = nothing je veux bien, nothing représente la valeur par défaut pour un type par valeur
    par exemple dim d as date, d vaut quelque chose par défaut (la plus petite date possible je crois), d=nothing retourne true si d vaut la date par défaut


    le string est un cas un peu à part, c'est un type objet qui fonctionne comme un type par valeur
    dim d as string => d = nothing vaut true, d = "" vaut true
    dim d as string = "" => d = nothing vaut false, d= " vaut true
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    299
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 299
    Points : 330
    Points
    330
    Par défaut
    Tu as oublié un quatrième cas qui est l'appel à la fonction IsNothing(d)

    J'utilise cette syntaxe histoire justement de ne pas tomber dans des cas de figure où l'objet en question ne vaut pas nothing mais vaut une valeur par défaut.

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

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    IsNothing(d) n'existe que dans vb, il est là pour ceux qui ont migré leur appli depuis vb6 et il ne fait que vérifier si is nothing

    voici le code de la fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Public Shared Function IsNothing(ByVal Expression As Object) As Boolean
        Return (Expression Is Nothing)
    End Function
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    299
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 299
    Points : 330
    Points
    330
    Par défaut
    OK, Sperot, j'ignorais la syntaxe de cette fonction et la compatibilité avec VB6.
    Merci de l'info !

    Ceci dit, je trouve plus lisible d'utiliser cette fonction et de réserver le mot clef Is aux conditions d'appartenance (exemple, If MyObject Is TextBox...).

Discussions similaires

  1. Drag and drop "de l'extérieur"
    Par Invité dans le forum C++Builder
    Réponses: 12
    Dernier message: 31/03/2020, 10h10
  2. [Look and feel] Texte des JLabels en gras
    Par aliasjcdenton dans le forum AWT/Swing
    Réponses: 11
    Dernier message: 26/01/2006, 11h49
  3. mise en page (Header and Footer) en XML-XSL.
    Par christine dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 01/03/2004, 16h31
  4. SQL :select et AND
    Par Shabata dans le forum Langage SQL
    Réponses: 5
    Dernier message: 20/05/2003, 13h39
  5. Fip, modbus and co...
    Par xave dans le forum Développement
    Réponses: 2
    Dernier message: 24/05/2002, 13h25

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