【问题标题】:C# How to initialise an array of a class obj, within another class obj?C#如何在另一个类obj中初始化一个类obj的数组?
【发布时间】:2020-07-09 10:41:36
【问题描述】:

我有一个 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# arrays class


    【解决方案1】:

    如果您绝对必须在 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;
        }
    }
    
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-06-10
      • 2015-04-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-26
      相关资源
      最近更新 更多