134 votes

VB.NET - IsNothing versus Est Rien

Est-ce que quelqu'utilisation VB.NET et de ont une préférence marquée pour ou contre l'utilisation de la IsNothing plutôt Is Nothing (par exemple, If IsNothing(anObject) ou If anObject Is Nothing...)? Si oui, pourquoi?

EDIT: Si vous pensez qu'ils sont à la fois tout aussi acceptable, pensez-vous qu'il est préférable d'en choisir un et de rester avec elle, ou est-ce OK pour les mélanger?

127voto

lomaxx Points 32540

Si vous jetez un oeil à la MSIL comme il est en cours d'exécution, vous verrez que cela ne compile pas vers l'exact même code. Lorsque vous utilisez IsNothing() il est en fait un appel à cette méthode, contrairement à l'évaluation de l'expression.

La raison, j'aurais tendance à pencher vers l'aide "n'Est Rien", c'est quand je suis en niant elle devient "IsNot Nothing" plutôt que "Pas IsNothing(objet)" personnellement, je sens l'air plus lisible.

47voto

Jack Snipes Points 328

Je trouve que Patrick Steele répondu à cette question mieux sur son blog: Éviter IsNothing()

Je n'ai pas la copie de sa réponse ici afin de s'assurer Patrick Steele obtenir du crédit pour son poste. Mais je pense que si vous essayez de décider si l'utilisation n'en Est Rien, ou IsNothing vous devriez lire son post. Je pense que vous serez d'accord qu'il n'en Est Rien, c'est le meilleur choix.

37voto

KyleMit Points 6937

Vous devez absolument éviter d'utiliser des IsNothing()

Voici 4 raisons de l'article IsNothing() VS n'Est Rien

  1. Le plus important, IsNothing(object) a tout passé comme un objet, même de types de valeur! Étant donné que la valeur des types de ne peut pas être Nothing, il est complètement perdu vérifier.
    Prenons l'exemple suivant:

    Dim i As Integer
    If IsNothing(i) Then
       ' Do something 
    End If
    

    Cela permettra de compiler et s'exécuter sans problème, alors que ceci:

    Dim i As Integer
    If i Is Nothing Then
        '   Do something 
    End If
    

    Ne compile pas, au lieu de cela, le compilateur génère l'erreur:

    'Est' opérateur de ne pas accepter des opérandes de type 'Integer'.
    Les opérandes doivent être de référence ou les types nullables.

  2. IsNothing(object) est en fait partie de la partie de l' Microsoft.VisualBasic.dll.
    Ce n'est pas souhaitable que vous ayez un inutiles dépendance sur le VisualBasic de la bibliothèque.

  3. Sa lente 33.76% plus lent en fait (plus de 1000000000 itérations)!

  4. Peut-être la préférence personnelle, mais IsNothing() se lit comme un Yoda Condition. Quand vous regardez une variable que vous êtes à la vérification de son état, avec comme sujet de votre enquête.

    c'est à dire ne il ne de x? --- N' Est - xing une propriété d' elle?

    Donc, je pense que If a IsNot Nothing se lit mieux que If Not IsNothing(a)

29voto

proudgeekdad Points 1278

Je suis d'accord avec "n'Est Rien". Comme indiqué ci-dessus, il est facile de nier avec "IsNot Nothing".

Je trouve cela plus facile à lire...

If printDialog IsNot Nothing Then

que ce...


4voto

deadtime Points 584

Je suis penchée vers l' "n'Est Rien" alternative, principalement parce qu'il semble de plus en plus OO.

Sûrement Visual Basic n'est pas eu l'Ain pas de mot-clé.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X