Qu’est-ce qu’une NullReferenceException, et comment la corriger ?
Qu'est-ce qu'une NullReferenceException, et comment la corriger ?
Re: Qu'est-ce qu'une NullReferenceException, et comment la corriger ?
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
nullintentionnellement 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 assignernullpour indiquer qu’aucune valeur n’y est stockée, par exempleint? a = null;(qui est un raccourci pourNullable<int> a = null;) où le point d’interrogation indique qu’il est permis de stockernulldans la variablea. Vous pouvez vérifier cela soit avecif (a.HasValue) {...}soit avecif (a==null) {...}. Les variables nullables, commeadans cet exemple, permettent d’accéder à la valeur viaa.Valueexplicitement, ou simplement normalement viaa.
Remarque : l’accès viaa.Valuelève uneInvalidOperationExceptionau lieu d’uneNullReferenceExceptionsiaestnull– vous devriez effectuer la vérification au préalable, c’est-à-dire que si vous avez une autre variable non nullableint b;alors vous devriez faire des affectations commeif (a.HasValue) { b = a.Value; }ou plus courtif (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)