C# 对象引用为空,但不是空



论坛上充斥着关于此类问题的帖子。我红了一些,但没有设法解决我自己的问题。我收到异常错误:

对象引用未设置为对象的实例。

        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

因此,两个对象都不是空的。

我相信

您的错误在以下代码中的CZaposleni类中:

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

更准确地说,在if ( radnomesto.ID == 0 ).由于如果未设置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;
    }
}

相关内容

  • 没有找到相关文章

最新更新