77 votes

La référence de l'objet ne correspond pas à une instance d'un objet.

Je continue à obtenir cette erreur lorsque je lance le programme.

La référence de l'objet ne correspond pas à une instance d'un objet. Description : Une exception non gérée s'est produite pendant l'exécution de la demande Web actuelle. Veuillez consulter la trace de la pile pour plus d'informations sur l'erreur et son origine dans le code. Détails de l'exception : System.NullReferenceException : La référence de l'objet n'est pas définie comme une instance d'un objet.

Source Error:

Line with error:

Line 156:        if (strSearch == "" || strSearch.Trim().Length == 0)

Quelle est la manière correcte de l'écrire ?

102voto

Matt Mitchell Points 17005

La méthode correcte dans .NET 4.0 est la suivante :

if (String.IsNullOrWhiteSpace(strSearch))

El String.IsNullOrWhiteSpace utilisée ci-dessus est équivalente à :

if (strSearch == null || strSearch == String.Empty || strSearch.Trim().Length == 0) 
// String.Empty is the same as ""

Référence pour la méthode IsNullOrWhiteSpace

http://msdn.microsoft.com/en-us/library/system.string.isnullorwhitespace.aspx

Indique si une chaîne de caractères spécifiée est Rien, vide ou constituée. uniquement de caractères d'espacement.

Dans les versions antérieures, vous pouviez faire quelque chose comme ceci :

if (String.IsNullOrEmpty(strSearch) || strSearch.Trim().Length == 0)

El String.IsNullOrEmpty utilisée ci-dessus est équivalente à :

if (strSearch == null || strSearch == String.Empty)

Ce qui signifie que vous devez toujours vérifier votre cas "IsWhiteSpace" avec la fonction .Trim().Length == 0 comme dans l'exemple.

Référence pour la méthode IsNullOrEmpty

http://msdn.microsoft.com/en-us/library/system.string.isnullorempty.aspx

Indique si la chaîne spécifiée est Rien ou une chaîne vide.

Explication :

Vous devez vous assurer strSearch (ou n'importe quelle variable d'ailleurs) n'est pas null avant de le déréférencer en utilisant le caractère point ( . ) - c'est-à-dire avant de faire strSearch.SomeMethod() o strSearch.SomeProperty vous devez vérifier que strSearch != null .

Dans votre exemple, vous voulez vous assurer que votre chaîne a une valeur, ce qui signifie que vous voulez assurer la chaîne :

  • N'est pas nul
  • n'est pas la chaîne vide ( String.Empty / "" )
  • N'est pas seulement un espace blanc

Dans les cas ci-dessus, vous devez placer le cas "Is it null ?" en premier, afin qu'il ne continue pas à vérifier les autres cas (et l'erreur) lorsque la chaîne est null .

23voto

Ritch Melton Points 7173

Toutes les versions de .Net :

if (String.IsNullOrEmpty(strSearch) || strSearch.Trim().Length == 0)

.Net 4.0 ou plus récent :

if (String.IsNullOrWhitespace(strSearch))

5voto

Handsome Cam Points 735

StrSearch dans ce cas est probablement null (pas simplement vide).

Essayez d'utiliser

String.IsNullOrEmpty(strSearch)

si vous essayez simplement de déterminer si la chaîne n'a pas de contenu.

5voto

Maraduarz Points 11

Je sais que cela a été posté il y a environ un an, mais c'est pour les utilisateurs, pour référence future.

J'ai rencontré un problème similaire. Dans mon cas (je vais essayer d'être bref, n'hésitez pas à me faire savoir si vous souhaitez plus de détails), j'essayais de vérifier si une chaîne était vide ou non (la chaîne est le sujet d'un e-mail). J'obtenais toujours le même message d'erreur, quoi que je fasse. Je savais que je faisais bien les choses, mais le message d'erreur était toujours le même. C'est alors que j'ai réalisé que je vérifiais si le sujet (chaîne) d'un email (instance/objet), et si l'email (instance) était déjà nul au départ. Comment pourrais-je vérifier le sujet d'un email, si l'email est déjà nul. J'ai vérifié si l'email était vide, cela a bien fonctionné.

En vérifiant le sujet (chaîne), j'ai utilisé les méthodes IsNullorWhiteSpace(), IsNullOrEmpty().

if (email == null)
{     
     break;    
}
else
{    
     // your code here    
}

1voto

MrSnowflake Points 2599

Je voudrais prolonger la réponse de MattMitchell en disant que vous pouvez créer une méthode d'extension pour cette fonctionnalité :

public static IsEmptyOrWhitespace(this string value) {
    return String.IsEmptyOrWhitespace(value);
}

Cela permet d'appeler :

string strValue;
if (strValue.IsEmptyOrWhitespace())
     // do stuff

Pour moi, c'est beaucoup plus propre que d'appeler la fonction statique String tout en étant protégé contre les références nulles !

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