Je reçois cette erreur et je ne suis pas sûr de ce qu'elle signifie ?
La référence de l'objet ne correspond pas à une instance d'un objet.
Je reçois cette erreur et je ne suis pas sûr de ce qu'elle signifie ?
La référence de l'objet ne correspond pas à une instance d'un objet.
Les variables dans .NET sont soit des types de référence, soit des types de valeur. Les types de valeur sont des primitives telles que nombres entiers y booléens ou structures (et peuvent être identifiées car elles héritent de System.ValueType ). Les variables booléennes, lorsqu'elles sont déclarées, ont une valeur par défaut :
bool mybool;
//mybool == false
Les types de référence, lorsqu'ils sont déclarés, n'ont pas de valeur par défaut :
class ExampleClass
{
}
ExampleClass exampleClass; //== null
Si vous essayez d'accéder à un membre d'une instance de classe en utilisant une référence nulle, vous obtiendrez une System.NullReferenceException . Ce qui revient à dire que La référence à un objet n'est pas définie comme une instance d'un objet. .
Le code suivant est un moyen simple de reproduire ce phénomène :
static void Main(string[] args)
{
var exampleClass = new ExampleClass();
var returnedClass = exampleClass.ExampleMethod();
returnedClass.AnotherExampleMethod(); //NullReferenceException here.
}
class ExampleClass
{
public ReturnedClass ExampleMethod()
{
return null;
}
}
class ReturnedClass
{
public void AnotherExampleMethod()
{
}
}
Il s'agit d'une erreur très courante qui peut se produire pour toutes sortes de raisons. La cause première dépend vraiment du scénario spécifique que vous avez rencontré.
Si vous utilisez une API ou si vous invoquez des méthodes qui peuvent renvoyer un résultat nul, il est important de gérer ce problème. avec élégance . La méthode principale ci-dessus peut être modifiée de manière à ce que l'exception NullReferenceException ne soit jamais vue par un utilisateur :
static void Main(string[] args)
{
var exampleClass = new ExampleClass();
var returnedClass = exampleClass.ExampleMethod();
if (returnedClass == null)
{
//throw a meaningful exception or give some useful feedback to the user!
return;
}
returnedClass.AnotherExampleMethod();
}
Tout ce qui précède n'est qu'un aperçu des principes de base de .NET Type. Pour plus d'informations, je vous recommande de vous procurer le document suivant CLR via C# ou en lisant ceci Article de MSDN par le même auteur - Jeffrey Richter. Regardez aussi, beaucoup plus complexe, exemple de quand vous pouvez rencontrer une NullReferenceException.
Certaines équipes utilisant Resharper font appel à Attributs de JetBrains pour annoter le code afin de mettre en évidence les endroits où l'on s'attend (ou non) à trouver des valeurs nulles.
Dkpatt a raison, mais aussi, c'est le message associé à une NullReferenceException
pour une explication plus détaillée, voir Réponse de @Iain quant aux sources communes de l'exception NullReferenceException
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.