簡體   English   中英

C# 如何在另一個類 obj 中初始化一個類 obj 的數組?

[英]C# How to initialise an array of a class obj, within another class 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] {  ?????????????? }

    };

如果您絕對必須在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;
    }
}

但如果可以的話,我更願意擁有一個構造函數並避免使用屬性設置器。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM