如何在嵌套结构中设置数组的维度

How to set dimension of arrays inside nested structs

提问人:Massimo Costanzo 提问时间:10/25/2023 最后编辑:jdwengMassimo Costanzo 更新时间:10/25/2023 访问量:68

问:

我必须使用一个包含结构的结构的结构,该结构包含结构的数组。 当我尝试修复数组的维度时,编译器(csc.exe)返回一个错误:

区块报价 错误 CS0426 类型“MyApp.strMAIN”中不存在类型名称“strInner_1”

这是我的代码:

public class MyApp
{

    public struct strInner_2
    {
        public int Num;
    }

    public struct strInner_1
    {
        public string month_name;
        public strInner_2[] number;
        public int days_num;
    }
    
    public struct strMAIN
    {
        public strInner_1 Main_1;
        public strInner_1 Main_2;
    }
    
    static void Main()
    {
        
        
        strMAIN.strInner_1.Main_1.number[] Numbers_1 = new strMAIN.strInner_1.Main_1.number[12];
        strMAIN.strInner_1.Main_2.number[] Numbers_2 = new strMAIN.strInner_1.Main_2.number[12];
    }
}

我做错了什么?

谢谢

C# 数组结构 维度

评论

0赞 jdweng 10/25/2023
从:strMAIN.strInner_1.Main_1.number[12] 到:strMAIN.Main_1.number[12]

答:

1赞 cyberjujutsu 10/25/2023 #1

您似乎正在尝试在 strMAIN 结构内的 strInner_1 结构中定义 strInner_2 结构的数组。但是,您尝试访问这些结构和创建数组的方式不正确。在 C# 中,不指定结构名称和数组声明。相反,您应该访问结构和数组

public class MyApp
{
    public struct strInner_2
    {
        public int Num;
    }

    public struct strInner_1
    {
        public string month_name;
        public strInner_2[] number;
        public int days_num;
    }

    public struct strMAIN
    {
        public strInner_1 Main_1;
        public strInner_1 Main_2;
    }

    static void Main()
    {
        strMAIN myStruct = new strMAIN();
        myStruct.Main_1.number = new strInner_2[12];
        myStruct.Main_2.number = new strInner_2[12];

        // You can now access the arrays like this:
        myStruct.Main_1.number[0].Num = 42;
        myStruct.Main_2.number[0].Num = 24;
    }
}