Ce inseamna "Obiect de referință nu setat la o instanță a unui obiect" înseamnă?

Am primit această eroare și am'm nu sunt sigur ce înseamnă asta?

Obiectul de referință nu setat la o instanță a unui obiect.

Comentarii la întrebare (2)

Variabile în .NET sunt fie tipuri de referință sau tipuri de valoare. Tipuri de valoare sunt primitive, cum ar fi integer și boolean sau structuri (și pot fi identificate deoarece au moștenit de la Sistem.ValueType). Variabile booleene, atunci când sunt declarate, au o valoare implicită:

bool mybool;
//mybool == false

Tipuri de referință, atunci când sunt declarate, nu au o valoare implicită:

class ExampleClass
{
}

ExampleClass exampleClass; //== null

Dacă încercați să accesați un membru de o instanță de clasă folosind o referință nulă atunci veți obține o Sistem.NullReferenceException. Care este la fel ca Obiectul de referință nu setat la o instanță a unui obiect.

Următorul cod este un mod simplu de a reproduce acest lucru:

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

Aceasta este o eroare foarte frecvente și pot apărea din cauza a tot felul de motive. Cauza rădăcină într-adevăr depinde de scenariu specific care le'am întâlnit.

Dacă sunteți folosind un API sau invocarea de metode care pot întoarce null atunci's important să se ocupe de acest lucru grațios. Principala metoda de mai sus poate fi modificat în așa fel încât NullReferenceException nu ar trebui să fie văzut de un utilizator:

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

Toate cele de mai sus doar indicii .NET Tip Fundamentele, pentru informații suplimentare, am'd recomanda fie ridicarea CLR prin intermediul C# sau citind aceasta articolul MSDN de același autor - Jeffrey Richter. Verifica, de asemenea, mult mai complex, exemplu de atunci când vă puteți întâlni o NullReferenceException.

Unele echipe folosind Resharper face uz de JetBrains atribute pentru a adnota cod pentru a evidenția unde null (nu) era de așteptat.

Comentarii (3)

O altă modalitate ușoară de a obține acest lucru:


 Person myPet = GetPersonFromDatabase();
 // check for myPet == null... AND for myPet.PetType == null
 if ( myPet.PetType == "cat" ) 
Comentarii (1)

Într-un cuvânt înseamnă.. sunteți încercarea de a accesa un obiect fără instantierea ea.. s-ar putea nevoie pentru a utiliza "noi" cuvinte cheie pentru a instantia întâi eu.e de a crea o instanță a acesteia.

De exemplu, pentru:


public class MyClass
{
   public int Id {get; set;}
}

MyClass myClass;

myClass.Id = 0; 
Comentarii (1)

Nu pentru a fi greu de cap, dar asta înseamnă exact ceea ce spune. Unul dintre obiect trimiteri este NUL. Te'll vedea acest lucru atunci când încercați și accesul proprietate sau metodă de NUL'd obiect.

Comentarii (2)

Înseamnă că a făcut ceva de genul asta.

Class myObject = GetObjectFromFunction();

Și fără face

dacă(myObject!=null), du-te face myObject.Metoda();`

Comentarii (0)

Cele mai multe ori, atunci când încercați să assing valoare în obiect, iar dacă valoarea este null, atunci acest tip de excepție apar. Vă rugăm să verificați acest link.

de dragul de auto-învățare, puteți pune o condiție. ca

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

ce înseamnă această eroare înseamnă? Obiectul de referință nu setat la o instanță a unui obiect.

exact ceea ce spune, vă sunt încercarea de a utiliza un obiect null dacă era să fie în mod corespunzător referit obiect.

Comentarii (1)

Dacă am clasa:

public class MyClass
{
   public void MyMethod()
   {

   }
}

și apoi am făcut:

MyClass myClass = null;
myClass.MyMethod();

Cea de-a doua linie aruncă această excepție deoarece continuăm am'm a apela o metoda pe o tip de referință obiect care se nul (I. e. nu a fost instanțiată de asteptare myClass = new MyClass())

Comentarii (1)