我经常收到此错误,但不是每次都收到此错误。
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);
请建议。提前谢谢。
答案 0 :(得分: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编译中。
通过这种方式,您可以查明问题并进一步搜索,找出问题所在。