定义C#结构体中,声明了自定义的结构体,运行时候报错,如何解决?

定义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的错误了。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

数组不初始化?