定义C#结构体中,声明了自定义的结构体,运行时候报错。
是哪里没有声明、实例化嘛?
怎么样修改、消除报错。
结构体如下
//A结构体
public struct PeriodStruct
{
public int StartTime_hour; //几点
public int StartTime_ninute; //几分
public int phasesNum; //个数
}
//C结构体
public struct dayScheduleStruct
{
public int number; //一日计划号
public DateTime dayTime; //日期时间
public PeriodStruct[] Periods; //A结构体参数
}
报错信息如下
private PeriodStruct[] Periods;
private dayScheduleStruct Schedule;
Schedule = new dayScheduleStruct();
//Periods = new PeriodStruct();
Schedule.Periods[0].StartTime_hour = 6; 。。。报错:System.NullReferenceException”类型的未经处理的异常
Schedule.Periods[0].StartTime_ninute = 0;
Schedule.Periods[0].phasesNum = 4;//相位数量
Schedule.Periods = new.Periods[10];
Schedule.Periods[0].StartTime_hour = 6;
数组需要new
【以下回答由 GPT 生成】
问题的报错是System.NullReferenceException
,这意味着在访问Schedule.Periods[0]
时,Schedule.Periods
为null。因此,需要对Schedule.Periods
进行初始化。
一种解决方案是,在创建Schedule
对象之后,为Schedule.Periods
数组分配内存,并为每个元素创建PeriodStruct
对象。以下是修改后的代码示例:
// A结构体
public struct PeriodStruct
{
public int StartTime_hour; // 几点
public int StartTime_minute; // 几分
public int phasesNum; // 个数
}
// C结构体
public struct dayScheduleStruct
{
public int number; // 一日计划号
public DateTime dayTime; // 日期时间
public PeriodStruct[] Periods; // A结构体参数
}
PeriodStruct[] Periods;
dayScheduleStruct Schedule;
Schedule = new dayScheduleStruct();
Schedule.Periods = new PeriodStruct[1]; // 为Periods数组分配内存,长度为1
Schedule.Periods[0] = new PeriodStruct(); // 为Periods[0]元素创建PeriodStruct对象
Schedule.Periods[0].StartTime_hour = 6;
Schedule.Periods[0].StartTime_minute = 0;
Schedule.Periods[0].phasesNum = 4;
这样修改后,应该就不会再报System.NullReferenceException
的错误了。
【相关推荐】
数组不初始化?