ssortingng.IsNullOrEmpty renvoie true lorsque la chaîne fournie n’est pas null

J’ai un test unitaire qui appelle une méthode sur un object en passant une chaîne.

Une des premières choses que la méthode appelée fait est de vérifier la chaîne pour qu’elle soit nulle ou vide.

Cependant, quelle que soit la valeur de filePath, l’appel à ssortingng.IsNullOrEmpty est true. Voir l’image ci-dessous.

Pourquoi la chaîne est-elle nulle ou vide?

Est-ce que j’ai râté quelque chose?

MODIFIER:

La vérification de null et de ssortingng.Empty fonctionne séparément comme prévu:

entrez la description de l'image ici

EDIT 2:

J’ai nettoyé la solution, supprimé le répertoire bin via le système de fichiers et, après une reconstruction, le débogueur indique que l’exception ArgumentNullException doit être levée, bien qu’elle ne l’ait pas réellement été .

Le contenu de filePath n’est certainement pas null (et non vide), ce qui nous laisse deux options:

  • Vous avez une variable de scope plus large (c’est-à-dire une variable globale) nommée filePath , qui est vide à null
  • Votre débogueur fait référence à une ancienne version des fichiers binarys. Dans ce cas, clarifiez et reconstruisez la solution

Mettre à jour

La mise à jour de votre question me fait penser que la deuxième option (de ce qui précède) est celle

Je rencontre également cela dans Visual Basic avec If Ssortingng.IsNullOrEmpty(foo) . Je suis d’accord avec le commentaire de Andrei, cela semble être un bug avec la façon dont le débogueur visualise cette construction particulière.

Nettoyer / Reconstruire ne l’a pas affecté. Fait intéressant, si vous ajoutez un corps plus complexe à votre instruction If , le débogueur ne fera que mettre en pause (la flèche jaune par exemple) sur la dernière ligne du corps. Il n’exécute pas réellement la ligne de code.

Il serait intéressant que quelqu’un puisse nous expliquer pourquoi cela se produit.

Voici le code où je vois ceci:

entrez la description de l'image ici

Notez que la flèche du débogueur est sur la ligne e.Cancel = True , même si myItem.Subject n’est pas null. Lorsque j’appuie sur F10, la flèche passe à la déclaration e.Cancel et e.Cancel rest à False.

De plus, tant que le débogueur est sur cette ligne, je ne peux pas faire glisser la flèche vers une autre ligne comme d’habitude. Si je tente de passer à une autre ligne en faisant glisser la flèche jaune, l’erreur suivante apparaît:

entrez la description de l'image ici

C’est la première fois que je rencontre ce problème.

Pour l’instant, nous avons ajouté ce qui suit au verso de la déclaration IF.

 #if DEBUG else { // A hack to fix the debugger issue on the IsNullOrEmpty statement above. } #endif