C# 对象引用未设置为对象的实例
当我使用for循环下面的类objectC# 对象引用未设置为对象的实例,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
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..如果我在表单中使用一个列表,并且如果我将工作日元素添加到此列表中,我认为工作日不会为空..我该怎么做?