Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 对象引用未设置为对象的实例_C# - Fatal编程技术网

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”];够了。