C# 对象引用未设置为对象的实例
海, 在我的代码中,当执行一个函数时,我经常遇到异常错误,即“对象引用未设置为对象的实例” 函数计算如下C# 对象引用未设置为对象的实例,c#,C#,海, 在我的代码中,当执行一个函数时,我经常遇到异常错误,即“对象引用未设置为对象的实例” 函数计算如下 private void PageHeaderSetting(Graphics g) { try { DataTable dtPageHeader=new DataTable() ; dtPageHeader = ds.Tables["Page Header"];
private void PageHeaderSetting(Graphics g)
{
try
{
DataTable dtPageHeader=new DataTable() ;
dtPageHeader = ds.Tables["Page Header"];
if (dtPageHeader.Rows.Count != 0)
{
foreach (DataRow dr in dtPageHeader.Rows)
{
if (dr.ItemArray[0].ToString() != "")
PageHeaderText = dr.ItemArray[0].ToString();
else
PageHeaderText = "";
if (dr.ItemArray[1].ToString() != "")
PageHeaderFont = (Font)dr.ItemArray[1];
else
PageHeaderFont = new Font("Tahoma", 18, FontStyle.Bold, GraphicsUnit.Point);
if (dr.ItemArray[2].ToString() != "")
PageHeaderFormat = AlignmentSetting(dr.ItemArray[2].ToString());
else
PageHeaderFormat = AlignmentSetting(Convert.ToString(Alignment.Left));
if (dr.ItemArray[3].ToString() != "")
PageHeaderColor = (System.Drawing.Color)dr.ItemArray[3];
else
PageHeaderColor = Color.Black;
PageFooterText = Word_Wrap(PageHeaderText, PageHeaderFont, g, 0);
PageHeader(g);
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
我怎么解决这个问题,有人能帮我吗
从第二行我得到了异常错误
表示在声明datatable并将ds.Tables放入其中后,会发生错误此异常表示您试图对空对象调用方法。异常应该为您提供一个堆栈跟踪,其中包含抛出异常的行号;这会帮你把它固定住一点。您还可以尝试在visual studio中调试它,并查看引发异常的位置&查看什么是null。而不是使用ToString()检查ItemArray中是否有值,您应该检查实际值。检查ItemArray[0]==null和ItemArray[0]==DBNull.Value 编辑: 从您的评论来看,您的数据集中似乎没有任何名为“页眉”的数据表 尝试在
dtPageHeader=ds.Tables[“Page Header”]行之后向DataTable对象添加空检查代码>
大概是这样的:
if (dtPageHeader == null)
{
// There is no table named Page Header
}
其中之一可能是真的:
- ds为空
- dtPageHeader中列上的值为null
查看异常中的行号
您的代码有许多链式调用,这是此异常的常见来源。如果这些链式属性中的任何一个返回null,则链中的“下一个”调用将失败,并出现NullReferenceException 异常是从哪一行引发的?请发布,哪一行?如果您告诉我们错误发生在哪里(在哪一行),这会有所帮助。还有一些变量(比如“ds”)看起来“出人意料”。异常是在哪一行抛出的?请告诉我们。次要备注:您不需要“new DataTable()”在下一行中覆盖它。只有一个DataTable dtPageHeader=ds.Tables[“Page Header”];够了。