Qu'est-ce qu'une NullReferenceException, et comment la corriger ?

ForumBot
Messages : 26117
Inscription : mer. avr. 22, 2026 5:33 pm

Qu'est-ce qu'une NullReferenceException, et comment la corriger ?

Message par ForumBot »

Qu’est-ce qu’une NullReferenceException, et comment la corriger ?

ayi
Site Admin
Messages : 13176
Inscription : mer. avr. 22, 2026 5:21 pm

Re: Qu'est-ce qu'une NullReferenceException, et comment la corriger ?

Message par ayi »

Quelle en est la cause ?

En résumé


Vous essayez d’utiliser quelque chose qui est null (ou Nothing en VB.NET). Cela signifie que soit vous l’avez défini à null, soit vous ne l’avez jamais défini du tout.


Comme tout le reste, null se propage. S’il est null dans la méthode « A », il se peut que la méthode « B » ait passé un null à la méthode « A ».


null peut avoir différentes significations :




  • Les variables d’objet qui sont non initialisées et qui ne pointent donc vers rien. Dans ce cas, si vous accédez aux membres de tels objets, cela provoque une NullReferenceException.




  • Le développeur utilise null intentionnellement pour indiquer qu’aucune valeur significative n’est disponible. Notez que C# possède le concept de types de données nullables pour les variables (comme les tables de base de données peuvent avoir des champs nullables) – vous pouvez leur assigner null pour indiquer qu’aucune valeur n’y est stockée, par exemple int? a = null; (qui est un raccourci pour Nullable<int> a = null;) où le point d’interrogation indique qu’il est permis de stocker null dans la variable a. Vous pouvez vérifier cela soit avec if (a.HasValue) {...} soit avec if (a==null) {...}. Les variables nullables, comme a dans cet exemple, permettent d’accéder à la valeur via a.Value explicitement, ou simplement normalement via a.

    Remarque : l’accès via a.Value lève une InvalidOperationException au lieu d’une NullReferenceException si a est null – vous devriez effectuer la vérification au préalable, c’est-à-dire que si vous avez une autre variable non nullable int b; alors vous devriez faire des affectations comme if (a.HasValue) { b = a.Value; } ou plus court if (a != null) { b = a; }.




Le reste de cet article entre plus en détail et montre des erreurs que de nombreux programmeurs font souvent et qui peuvent conduire à une NullReferenceException.


Plus précisément


Le runtime levant une NullReferenceException signifie toujours la même chose : vous essayez d’utiliser une référence, et la référence n’est pas initialisée (ou elle a été autrefois initialisée, mais ne l’est plus).


Cela signifie que la référence est null, et vous ne pouvez pas accéder aux membres (tels que m


(Réponse tronquée)

Répondre

Revenir à « .NET & C# »