错误'对象引用未设置为对象的实例。'

时间:2012-08-27 03:46:42

标签: c#

有谁知道我的代码在哪里出错?这段代码工作得很好,但我将文件传输到另一台计算机,当我编译文件时弹出这个错误。

 private void ShowGeneratedSchedule(string sLocationName, string sAllocationDate)
    {
        //lstAllocation = db.allocations.Where(a => a.AllocationDate == sAllocationDate &&
        //    a.LocationName == sLocationName).ToList();

        scheduleDGV.EditMode = DataGridViewEditMode.EditProgrammatically;
        for (int i = 0; i < lstAllocation.Count; i++)
        {
            for (int j = 0; j < scheduleDGV.Rows.Count - 1; j++)
            {
                for (int k = 0; k < scheduleDGV.Columns.Count; k++)
                {
                    if (scheduleDGV[0, j].Value.Equals(lstAllocation[i].LocationName) &&
                        scheduleDGV[1, j].Value.Equals(lstAllocation[i].StationName) &&
                        scheduleDGV.Columns[k].HeaderText.Equals(lstAllocation[i].AllocationTime.ToString()))
                    {
                        if (lstAllocation[i].EmployeeName != null)
                        {
                            scheduleDGV[k, j].Value = lstAllocation[i].EmployeeName;
                        }
                    }
                }
            }
        }

        //scheduleDGV.DataSource = lstEmployeeSlot;
    }

到达此行时显示错误

for (int i = 0; i < lstAllocation.Count; i++)

有谁知道这里有什么问题吗?是否有可能将其转移到另一台计算机?

4 个答案:

答案 0 :(得分:2)

这很可能意味着lstAllocation为null并且从未分配过值。 为什么这条线被注释掉了?

 //lstAllocation = db.allocations.Where(a => a.AllocationDate == sAllocationDate &&
        //    a.LocationName == sLocationName).ToList();

答案 1 :(得分:2)

lstAllocation未初始化?该方法第一行的注释是什么?为什么要注释掉?没有lstAllocation没有内容。

答案 2 :(得分:1)

看起来您已将注释掉的行标注为lstAllocation。这很可能是你的问题。

答案 3 :(得分:0)

lstAllocation引用变量在程序/代码中的某处初始化为null(或者对象尚未构建或对象缺失)。

最好检查引用变量的 - 它是否包含对象的nullreference

private void ShowGeneratedSchedule(string sLocationName, string sAllocationDate)
    {
        if(lstAllocation==null){
           Console.WriteLine("List is not initialized. Can't proceed");
           return;
        }
        //rest code
    }