使用NUnit測試用下面的代碼塊C#代碼:空對象引用
foreach (XmlNode node in nodeList)
{
thisReport.Id = node.Attributes.GetNamedItem("id").Value;
thisReport.Name = node.Attributes.GetNamedItem("name").Value;
thisReport.Desc = node.Attributes.GetNamedItem("desc").Value;
if (node.SelectNodes("subreport").Count > 0)
{
thisReport.HasSubReport = true;
subReportNodeList = node.SelectNodes("subreport");
foreach(XmlNode subNode in subReportNodeList)
{
mySubReport.ParentID = node.Attributes.GetNamedItem("id").Value;
mySubReport.Priority = subNode.Attributes.GetNamedItem("priority").Value;
mySubReport.SubReportId = subNode.Attributes.GetNamedItem("id").Value;
mySubReport.SubReportName = subNode.Attributes.GetNamedItem("name").Value;
string sTime = subNode.Attributes.GetNamedItem("time").Value;
mySubReport.Time = Convert.ToInt16(sTime);
thisReport.SubReportsList.Add(mySubReport);
}
}
else
{
thisReport.HasSubReport = false;
}
reports.Add(thisReport);
}
的代碼失敗就行了空對象引用:
thisReport.SubreportsList.Add(mySubReport)
但看當地人, thisReport
存在並且具有在塊頂部分配的值,並且存在mySubReport
並且其值被添加到thisReport的行的上方。 mySubReport
中的所有值都是有效的,SubReportsList
中的thisReport
是SubReport
類型的通用列表。
那麼,零位在哪裏呢?這看起來很簡單,它一定是我看不到的真正明顯的東西。
如果'thisReport.SubReportsList.Add(mySubReport);'和'thisReport'和'mySubReport'中出現異常,那麼唯一的選擇是'thisReport.SubReportsList'爲null。仔細檢查你的財產實施。 – dtb 2010-09-16 15:02:07
[在.NET中是什麼是NullReferenceException?]的可能重複(http://stackoverflow.com/questions/4660142/what-is-a-nullreferenceexception-in-net) – 2012-05-28 12:58:15