2

我经常收到此错误,但并非每次都收到此错误。

Object reference not set to an instance of an object.

我正在使用以下代码:

Category n = new Category { 
                     ID = id, 
                     name = TxtName.Text, 
                     TopNav = Convert.ToInt32(Chk_Top.SelectedItem.Value), 
                     LeftNav = Convert.ToByte(Chk_Left.Checked ? "1" : "0"), 
                     Active = Convert.ToByte(Chk_Active.Checked ? "1" : "0"), 
                     Rank = Convert.ToInt32(Txt_position.Text), 
                     ParentID = pid, 
                     Image = name, 
                     Content = Content.Text, 
                     PageTitle = Txt_SpeakerTitle.Text, 
                     PageName = Txt_SpeakerTitle.Text, 
                     speakerpreview = Txt_Previewdesc.Text, 
                     PageDesc = Txt_SpeakerTitle.Text, 
                     PageKeyword = Txt_SpeakerTitle.Text, 
                     Filehandler = "speaker", 
                     SpeakerDetail = speakerdesc.Text, 
                     SpeakerTitle = Txt_SpeakerTitle.Text, 
                     SpotLightdesc = spotlightcontent.Text, 
                     Chk_Spot = Convert.ToByte(Chk_Spot.Checked ? "1" : "0"),
                     Catalogue = Catalogue };

db.Categories.InsertOnSubmit(n);

请建议。提前致谢。

4

1 回答 1

0

在该行上放置一个断点并将鼠标悬停在每个属性上。

另一种方法可能是使用代码合同,如下所示:

Contract.Assert(TxtName != null);
Contract.Assert(!string.IsNullOrEmpty(TxtName.Text));
Contract.Assert(Chk_Top != null);
Contract.Assert(Chk_Top.SelectedItem != null);
... etc.

在您上面显示的代码之前。这会验证您的假设并在不满足假设时引发异常。

这样做的好处是,每次运行时都会在代码的 DEBUG 版本中检查所有这些值,但在 RELEASE 编译时会忽略这些检查。

通过这种方式,您可以查明问题并进一步搜索,找出问题所在。

于 2012-10-12T07:32:21.893 回答