C# 对象引用未设置为对象的实例

C# 对象引用未设置为对象的实例,c#,.net,C#,.net,当我使用for循环下面的类objectcleave时,会出现错误“object reference not set to a instance of a object” private void dateTimePickertodate_ValueChanged(object sender, EventArgs e) { if (dateTimePickertodate.Value <=dateTimePickerfromdate.Value) { Mess

当我使用for循环下面的类object
cleave
时,会出现错误“object reference not set to a instance of a object”

private void dateTimePickertodate_ValueChanged(object sender, EventArgs e)
{
    if (dateTimePickertodate.Value <=dateTimePickerfromdate.Value)
    {
        MessageBox.Show("Choose Correct date");
        textBoxnumofdays.Clear();
    }
    else
    {
        cleave = new LeaveApplication(constr);
        span = dateTimePickertodate.Value - dateTimePickerfromdate.Value;
        Getdays();
        if (Mode == 1)
        {
            textBoxnumofdays.Text = Convert.ToString(span.Days + 2);
        }
        else
        {
            textBoxnumofdays.Text = Convert.ToString(span.Days + 1);
        }
        for (int i = 0; i < daysofweek.Count; i++)
        {
            if (Mode == 1)
            {
                textBoxnumofdays.Text = Convert.ToString(span.Days + 2);
                if (daysofweek[i].Equals(cleave.WeekDays[i]))
                {
                    textBoxnumofdays.Text = Convert.ToString(span.Days - 1);
                }
            }
            else
            {
                textBoxnumofdays.Text = Convert.ToString(span.Days + 1);
                if (daysofweek[i].Equals(cleave.WeekDays[i]))
                {
                    textBoxnumofdays.Text = Convert.ToString(span.Days - 1);
                }
            }
        }
    }
}
private void dateTimePickertodate\u值已更改(对象发送方,事件参数e)
{
如果(dateTimePickertodate.Value
当iam使用类对象时,请在for循环下方劈开

private void dateTimePickertodate_ValueChanged(object sender, EventArgs e)
{
    if (dateTimePickertodate.Value <=dateTimePickerfromdate.Value)
    {
        MessageBox.Show("Choose Correct date");
        textBoxnumofdays.Clear();
    }
    else
    {
        cleave = new LeaveApplication(constr);
        span = dateTimePickertodate.Value - dateTimePickerfromdate.Value;
        Getdays();
        if (Mode == 1)
        {
            textBoxnumofdays.Text = Convert.ToString(span.Days + 2);
        }
        else
        {
            textBoxnumofdays.Text = Convert.ToString(span.Days + 1);
        }
        for (int i = 0; i < daysofweek.Count; i++)
        {
            if (Mode == 1)
            {
                textBoxnumofdays.Text = Convert.ToString(span.Days + 2);
                if (daysofweek[i].Equals(cleave.WeekDays[i]))
                {
                    textBoxnumofdays.Text = Convert.ToString(span.Days - 1);
                }
            }
            else
            {
                textBoxnumofdays.Text = Convert.ToString(span.Days + 1);
                if (daysofweek[i].Equals(cleave.WeekDays[i]))
                {
                    textBoxnumofdays.Text = Convert.ToString(span.Days - 1);
                }
            }
        }
    }
}
您不会显示
for
循环下方的任何内容,并且
cleave
未在方法中声明-因此我们推断它是一个字段。因此,我们可以假设以下两种情况之一:

  • 所选日期不是有效日期,因此从未分配
    cleave
    new LeaveApplication(constr);
  • 事件尚未激发,
    dateTimePickertodate\u ValueChanged
    从未被调用-因此,
    cleave
    也未被分配
当iam使用类对象时,请在for循环下方劈开

private void dateTimePickertodate_ValueChanged(object sender, EventArgs e)
{
    if (dateTimePickertodate.Value <=dateTimePickerfromdate.Value)
    {
        MessageBox.Show("Choose Correct date");
        textBoxnumofdays.Clear();
    }
    else
    {
        cleave = new LeaveApplication(constr);
        span = dateTimePickertodate.Value - dateTimePickerfromdate.Value;
        Getdays();
        if (Mode == 1)
        {
            textBoxnumofdays.Text = Convert.ToString(span.Days + 2);
        }
        else
        {
            textBoxnumofdays.Text = Convert.ToString(span.Days + 1);
        }
        for (int i = 0; i < daysofweek.Count; i++)
        {
            if (Mode == 1)
            {
                textBoxnumofdays.Text = Convert.ToString(span.Days + 2);
                if (daysofweek[i].Equals(cleave.WeekDays[i]))
                {
                    textBoxnumofdays.Text = Convert.ToString(span.Days - 1);
                }
            }
            else
            {
                textBoxnumofdays.Text = Convert.ToString(span.Days + 1);
                if (daysofweek[i].Equals(cleave.WeekDays[i]))
                {
                    textBoxnumofdays.Text = Convert.ToString(span.Days - 1);
                }
            }
        }
    }
}
您不会显示
for
循环下方的任何内容,并且
cleave
未在方法中声明-因此我们推断它是一个字段。因此,我们可以假设以下两种情况之一:

  • 所选日期不是有效日期,因此从未分配
    cleave
    new LeaveApplication(constr);
  • 事件尚未激发,
    dateTimePickertodate\u ValueChanged
    从未被调用-因此,
    cleave
    也未被分配

简单地说,
cleave
的实例在您希望使用它的时候还没有创建

您是否检查过它是否为空,是否已创建了
cleave
的非空实例

这里的一个问题是,我们必须假设
clave
constr
span
是“表单”中的字段,并且它们具有正确的类型定义,并且它们对于运行代码的线程是可访问和有效的

编辑


查看更多注释。如果表单上使用的任何数据是由与GUI不在同一线程上运行的代码推送的,而不是由表单类检索的,则需要在表单上定义一个委托,该委托可由该代码用于更新数据。使用“表单类”。调用(委托函数)键入功能。

简单地说,
cleave
的一个实例在您希望使用它时尚未创建

您是否检查过它是否为空,是否已创建了
cleave
的非空实例

这里的一个问题是,我们必须假设
clave
constr
span
是“表单”中的字段,并且它们具有正确的类型定义,并且它们对于运行代码的线程是可访问和有效的

编辑


查看更多注释。如果表单上使用的任何数据是由与GUI不在同一线程上运行的代码推送的,而不是由表单类检索的,则需要在表单上定义一个委托,该委托可由该代码用于更新数据。使用“表单类”。调用(委托函数)键入功能。

您确定
工作日
数组已在
LeaveApplication
构造函数中初始化。如果未初始化,它将在语句中抛出
NullReferenceException


if(daysofweek[i].Equals(cleave.WeekDays[i])
是否确定
工作日
数组已在
LeaveApplication
构造函数中初始化。否则,它将在语句中引发
NullReferenceException


if(daysofweek[i].Equals(cleave.WeekDays[i]))

您应该首先自己调试它-例如,在IDE中,异常发生在哪一行?在那一点上的变量是什么?您可以自己做很多事情来诊断它…或者至少发布准确的错误,带有行号和触发此错误的方法调用。您尝试过什么吗?cleave.W平日有空值..但它在其类中有值..我如何将该值访问到formin 3层体系结构的代码中?我如何访问类中的表单..是否可能?如果可以,请帮助我..如果我在表单中使用列表,并且如果我将平日元素添加到此列表中,我认为平日不会为空..我该如何做?3层体系结构没有空值这就像是在说“在3层架构中,如何连接两个字符串?”。你到底想在这里做什么?你应该先看看自己调试它-例如,在IDE中,异常发生在哪一行?在那一点上的变量是什么?你可以自己做很多事情来诊断它…或者至少发布准确的错误,带有行号,以及触发此错误的方法调用。哈你试过什么吗?cleave.WeekDays有空值..但它在它的类中有值..我如何将该值访问到formin 3层体系结构的代码中?我如何访问类中的表单..可能吗?如果是这样,请帮助我..如果我在表单中使用列表,并且如果我将WeekDays元素添加到此列表中,我认为WeekDays不会为空..我怎么做hat?3层体系结构与此无关……这就像说“在3层体系结构中,如何连接两个字符串?”.你到底想在这里做什么?在三层体系结构中,我如何访问类中的表单..可能吗?如果可能的话,请帮助我..如果我在表单中使用列表,如果我在列表中添加工作日元素,我认为工作日不会为空..我怎么做?在三层体系结构中,我如何访问类中的表单..可能吗?如果可能的话,请帮助我p me..如果我在表单中使用一个列表,并且如果我将工作日元素添加到此列表中,我认为工作日不会为空..我该怎么做?