首页 > 解决方案 > C#如何在另一个类obj中初始化一个类obj的数组?

问题描述

我有一个需要初始化的 TrainingPlanData 类型的 obj trainingData。此 obj 中的变量之一是不同类 TrainingPlanDataSet 的数组。

我将如何初始化这部分 trainingData?(见下文)

谢谢

    public class TrainingPlanData
    {
        public Int16 pool_ID = 3;
        public byte[] training_plan_name = new byte[10];
        public TrainingPlanDataSet[] training_set = new TrainingPlanDataSet[10];
    }

    public class TrainingPlanDataSet
    {
        public Int16 set_ID = 1;
        public byte[] set_name = new byte[10];
        public Int16 set_distance = 0;
    }

    public static TrainingPlanData trainingData = new TrainingPlanData
    {
        pool_length_override = 5,
        training_plan_name = new byte[10] { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

        training_set = new TrainingPlanDataSet[10] {  ?????????????? }

    };

标签: c#arraysclass

解决方案


如果您绝对必须在 中具有可变属性TrainingPlanData,您可以这样做:

public class TrainingPlanData
{
    public Int16 PoolID => 3;
    public byte[] TrainingPlanName { get; set; }
    public TrainingPlanSet[] TrainingSet { get; set; }
}

public class TrainingPlanDataSet
{
    public Int16 SetID => 1;
    public byte[] SetName { get; set; }
    public Int16 SetDistance { get; set; } = 0;
}

public class TrainingPlanDataFactory
{
    private const c_plans = 10;

    public TrainingPlanData Create()
    {
        return new TrainingPlanData()
        {
            TrainingPlanName = new byte[c_plans] { 0x00, ..... }
            TrainingSet = CreateDataSets();
        }
    }

    private TrainingPlanDataSet[] CreateDataSets()
    {
        var arr = new TrainingPlanDataSet[c_plans]
        for(int i = 0; i < c_plans; i++)
        {
            arr[i] = new TrainingPlanDataSet();
        }

        return arr;
    }
}

但如果可以的话,我更愿意有一个构造函数并避免使用属性设置器。


推荐阅读