2016-05-21 6 views
0

Das Forum ist voll von Posts über solche Probleme. Ich habe einige rot gemacht, aber es ist mir nicht gelungen, mein eigenes Problem zu lösen. ich Ausnahmefehler:C# Objektreferenz null, aber nicht null

Object reference not set to an instance of an object.

 try 
     { 
      CZaposleni zap = new CZaposleni(); 
      zap.Sifra = "1234567894567"; 
      zap.Ime = "testIme"; 
      zap.Prezime = "testPrezime"; 
      zap.Pol = Char.Parse("M"); 
      zap.JMBG = "1234567899871"; 
      zap.Brknjizice = "12345"; 
      zap.SS = "4.test"; 
      zap.DatumR = DateTime.Parse("4/11/2013"); 
      zap.DatumZ = DateTime.Parse("4/11/2013"); 
      zap.Mestorodj = "testMesto"; 
      zap.Prebivaliste = "testPrebivaliste"; 
      zap.Kontakt1 = "654987"; 
      zap.Kontakt2 = "564845"; 
      CRadnaMesta rad = new CRadnaMesta(); 
      rad.ID = Int32.Parse(cbRadnaMesta.SelectedValue.ToString()); 
      Console.WriteLine("Zap = "+zap.ID +" Rad = "+rad.ID); 
      zap.Radnomesto = rad; 
      Console.WriteLine("Zap check 1: " + zap.ID + " " + zap.Radnomesto.ID); 
      zap.dodajRadnika(); 
      Console.WriteLine("Zap check 2: "+zap.ID+" "+zap.Radnomesto.ID); 

     } 
     catch (Exception ex) 
     { 
      MessageBox.Show("Frm: "+ex.Message); 
     } 

Die Code Pausen bei 'zap.Radnomesto = rm;' seit der letzten Ausgabe bei der Ausführung des Codes bekomme ich

rm.ID = 1
zap.ID = 0

So keines von zwei Objekten ist null.

+6

Wenn über einen Fehler zu fragen, ** ** immer sind die volle Stack-Trace des Fehlers. Wenn dieser Code wirklich diesen Fehler in der Zeile, die Sie sagen, wirft, dann ist 'Radnomesto' eine * Eigenschaft * und der Fehler wird innerhalb seines Setter geworfen. –

+0

Bitte geben Sie den minimalen Code ein, der erforderlich ist, um dies zu reproduzieren. –

+1

Ich vermute, 'Radnomesto' könnte eine Eigenschaft mit einem' set' Accessor sein, in dem das Problem auftritt. –

Antwort

1

Ich glaube, Ihre Fehler in der CZaposleni Klasse im folgenden Code ist:

public CRadnaMesta Radnomesto 
{ 
    get 
    { 
     return radnomesto; 
    } 
    set 
    { 
     if (radnomesto.ID == 0) 
      throw new Exception("Morate uneti radno mesto."); 
     radnomesto = value; 
    } 
} 

Genauer gesagt in if (radnomesto.ID == 0). Da radnomesto Null ist, wenn nicht festgelegt, erhalten Sie den Fehler beim Überprüfen der ID.

Sie sollten stattdessen den folgenden Code verwenden:

public CRadnaMesta Radnomesto 
{ 
    get 
    { 
     return radnomesto; 
    } 
    set 
    { 
     if (value == null || value.ID == 0) 
      throw new Exception("Morate uneti radno mesto."); 
     radnomesto = value; 
    } 
} 
+0

Jetzt bricht es bei Wurf Ausnahme jedes Mal .. – Morsus

+0

In den Kommentaren oben sagte der OP der Setter sah so aus: 'öffentliche CRadnaMesta Radnomesto {Satz {if (radnomesto.ID == 0) werfen neue Ausnahme (" Morate uneti radno Mesto. "); radnomesto = Wert; }} 'Wenn dieser Code mit einem Null-Objekt bricht, bedeutet dies höchstwahrscheinlich, dass der Wert von" radnomesto "null ist und Ihre Code-Änderungen diese Ausnahme nicht beheben werden, wenn dies der Fall ist. – jussij

+0

Aber radnomesto Klasse (Hinzufügen/Ändern/Entfernen/Liste) funktioniert perfekt ...:/ – Morsus