2016-05-21 18 views
0

フォーラムには、このような問題に関する記事が満載です。私はいくつか赤いが、自分自身の問題を解決することはできませんでした。 は私が例外エラーを取得:C#オブジェクト参照null 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); 
     } 

でコードブレーク 'zap.Radnomesto = RM;'最後の出力以来私が手のコードを実行する場合は、だから、二つのオブジェクトのどれがヌルではない

rm.ID = 1
zap.ID = 0

です。

+6

を誤りについて尋ねたとき、**常に**エラーの完全なスタックトレースが含まれます。このコードが実際にあなたが言う行にそのエラーを投げている場合、 'Radnomesto'は*プロパティ*であり、そのエラーはそのセッター内でスローされています。 –

+0

これを再現するために必要な最小限のコードを記入してください。 –

+1

'Radnomesto'は、問題が発生する' set'アクセサを持つプロパティである可能性があります。 –

答えて

1

私はあなたのエラーは、次のコードでCZaposleniクラスであると信じて:if (radnomesto.ID == 0)でより正確に

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

radnomestoは設定されていない場合はnullなので、IDの確認中にエラーが発生します。

あなたが代わりに以下のコードを使用する必要があります。

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

は、今ではスロー例外たびに...上記のコメントで – Morsus

+0

で壊し、OPはセッターがこのように見えたと述べた: 'パブリックCRadnaMesta Radnomesto {集合{場合(radnomesto.ID == 0)新しい例外を投げる(「Morate uneti radnoメスト。 radnomesto = value; }} 'そのコードがnullオブジェクトで壊れている場合は、radnomestoがnullであり、コード変更によってその例外が修正されない場合がほとんどです。 – jussij

+0

しかしradnomestoクラス(追加/変更/削除/リスティング)は完璧に機能します.../ – Morsus

関連する問題