¿Qué significa “Referencia de objeto no configurada para una instancia de un objeto”?

Estoy recibiendo este error y no estoy seguro de lo que significa?

Referencia a objeto no establecida como instancia de un objeto.

    Las variables en .NET son tipos de referencia o tipos de valores. Los tipos de valores son primitivos, como enteros y booleanos o estructuras (y se pueden identificar porque heredan de System.ValueType ). Las variables booleanas, cuando se declaran, tienen un valor predeterminado:

     bool mybool; //mybool == false 

    Los tipos de referencia, cuando se declaran, no tienen un valor predeterminado:

     class ExampleClass { } ExampleClass exampleClass; //== null 

    Si intenta acceder a un miembro de una instancia de clase utilizando una referencia nula, obtendrá una System.NullReferenceException . Lo cual es lo mismo que Referencia de objeto no establecida en una instancia de un objeto .

    El siguiente código es una forma simple de reproducir esto:

     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() { } } 

    Este es un error muy común y puede ocurrir debido a todo tipo de razones. La causa raíz realmente depende del escenario específico que haya encontrado.

    Si está utilizando una API o invocando métodos que pueden devolver nulo, entonces es importante manejar esto correctamente . El método principal anterior se puede modificar de tal forma que la NullReferenceException nunca debería ser vista por un usuario:

     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(); } 

    Todo lo anterior realmente solo da pistas sobre Fundamentos de .NET Type, para más información, recomiendo recoger CLR a través de C # o leer este artículo de MSDN del mismo autor: Jeffrey Richter. También puedes ver, mucho más complejo, un ejemplo de cuándo puedes encontrar una NullReferenceException.

    Algunos equipos que usan Resharper hacen uso de los atributos de JetBrains para anotar el código y resaltar dónde se esperan (no) los nulos.

    Otra manera fácil de obtener esto:

      Person myPet = GetPersonFromDatabase(); // check for myPet == null... AND for myPet.PetType == null if ( myPet.PetType == "cat" ) < --- fall down go boom! 

    No es franco, pero significa exactamente lo que dice. Una de sus referencias de objeto es NULL. Verá esto cuando intente acceder a la propiedad o al método de un objeto NULL.

    En pocas palabras, significa … Está intentando acceder a un objeto sin instanciarlo .. Puede que necesite usar la palabra clave “nueva” para crear una instancia primero, es decir, crear una instancia de la misma.

    Por ejemplo:

     public class MyClass { public int Id {get; set;} } MyClass myClass; myClass.Id = 0; < ----------- An error will be thrown here.. because myClass is null here... 

    Deberás usar:

     myClass = new MyClass(); myClass.Id = 0; 

    Espero haber dejado en claro ...

    Significa que hiciste algo como esto.

     Class myObject = GetObjectFromFunction(); 

    Y sin hacer

    if(myObject!=null) , sigue myObject.Method();

    La mayoría de las veces, cuando intenta asignar valor al objeto, y si el valor es nulo, entonces ocurre este tipo de excepción. Por favor revisa este enlace .

    por el bien del autoaprendizaje, puede poner alguna condición de verificación. me gusta

     if (myObj== null) Console.Write("myObj is NULL"); 

    ¿Qué significa este error? Referencia a objeto no establecida como instancia de un objeto.

    exactamente lo que dice, estás tratando de usar un objeto nulo como si se tratara de un objeto referenciado correctamente.

    Si tengo la clase:

     public class MyClass { public void MyMethod() { } } 

    y luego hago:

     MyClass myClass = null; myClass.MyMethod(); 

    La segunda línea arroja esta excepción porque estoy llamando a un método en un objeto de tipo de referencia que es null (es decir, no se ha instanciado al invocar myClass = new MyClass() )