如何初始化多维结构数组

时间:2014-05-09 12:21:11

标签: c# multidimensional-array structure

我一直在尝试通过数组初始化结构......

以下是代码:

struct test_struct
{
    double a, b, c, d, e;

    public test_struct(double a, double b, double c, double d, double e)
    {
        this.a = a;
        this.b = b;
        this.c = c;
        this.d = d;
        this.e = e;
    }
};

test_struct[,,] Number = new test_struct[2, 3]
{
    {
        {  12.44, 525.38,  -6.28,  2448.32, 632.04 },
        {-378.05,  48.14, 634.18,   762.48,  83.02 },
        {  64.92,  -7.44,  86.74,  -534.60, 386.73 },
    },
    {
        {  48.02, 120.44,   38.62,  526.82, 1704.62 },
        {  56.85, 105.48,  363.31,  172.62,  128.48 },
        {  906.68, 47.12, -166.07, 4444.26,  408.62 },
    },
};

我无法使用循环或索引来执行此操作..我得到的错误是

  

数组初始值设定项只能在变量或字段初始值设定项中使用。请尝试使用新表达式。

如何更正此代码?

2 个答案:

答案 0 :(得分:0)

此代码是有效的C#,应该按照您的意愿执行:

    struct test_struct
    {
        double a, b, c, d, e;
        public test_struct(double a, double b, double c, double d, double e)
        {
            this.a = a;
            this.b = b;
            this.c = c;
            this.d = d;
            this.e = e;
        }
    };

    private test_struct[,] Number =
    {
        {

            new test_struct(12.44, 525.38, -6.28, 2448.32, 632.04),
            new test_struct(-378.05, 48.14, 634.18, 762.48, 83.02),
            new test_struct(64.92, -7.44, 86.74, -534.60, 386.73),

        },

        {
            new test_struct(48.02, 120.44, 38.62, 526.82, 1704.62),
            new test_struct(56.85, 105.48, 363.31, 172.62, 128.48),
            new test_struct(906.68, 47.12, -166.07, 4444.26, 408.62),
        },
    };

答案 1 :(得分:0)

最终解决方案应该是所有评论:

private test_struct[,] Number;

public void test()
{
    Number = new test_struct[2, 3]
    {
        {
            new test_struct(  12.44, 525.38,  -6.28,  2448.32, 632.04),
            new test_struct(-378.05,  48.14, 634.18,   762.48,  83.02),
            new test_struct(  64.92,  -7.44,  86.74,  -534.60, 386.73),
        },
        {
            new test_struct(  48.02, 120.44,   38.62,  526.82, 1704.62),
            new test_struct(  56.85, 105.48,  363.31,  172.62,  128.48),
            new test_struct( 906.68, 47.12,  -166.07, 4444.26,  408.62),
        },
    };
}