二维数组不分配值

时间:2014-10-31 23:11:32

标签: c#

所以我有一个二维数组或一个数组数组,如下所示:

public static double[][] arrayOfArrays = {Jan,
                                             Feb,
                                             Mar,
                                             Apr,
                                             May,
                                             Jun,
                                             Jul,
                                             Aug,
                                             Sep,
                                             Oct,
                                             Nov,
                                             Dec};

这些项目中的每一项都是一个如下所示的数组:

public static double[] Jan = {Properties.Settings.Default.Jan1Costs,
                                   Properties.Settings.Default.Jan2Costs,
                                   Properties.Settings.Default.Jan3Costs,
                                   Properties.Settings.Default.Jan4Costs,
                                   Properties.Settings.Default.Jan5Cost,
                                   Properties.Settings.Default.Jan6Cost,
                                   Properties.Settings.Default.Jan7Cost};

我在为数组分配值时遇到了一些麻烦。程序编译和所有,但这两个代码产生不同的结果。 这两个数组都在一个名为Globals的类中。

这是方法1:

Globals.Oct[1] += AR * Properties.Settings.Default.MyPrice;

这是方法2:

Globals.arrayOfArrays[9][1] += AR * Properties.Settings.Default.MyPrice;

除非我误解2D数组,否则两者都应该做同样的事情,对吧?但是,我发现方法2绝对没有任何作用,并且不会将任何内容保存到设置中。但是,方法1确实如此。

我想知道什么阻止了方法2的工作,因为我非常希望能够通过在第一个数组插槽中使用DateTime.Now.Month来保存值,所以我不喜欢不同月份需要有12个if / case。

提前致谢。

1 个答案:

答案 0 :(得分:0)

尽量不要从static变量获取值来计算static变量的值。例如,为什么:

public static int i = j * 2;
public static int j = 2;

i无法确定,它可能是0因为int(j)的默认值是0,或者因为变量的初始化被逆转因为某种原因。

将您的课程代码更改为:

//Inside your Globals.cs's class
public static double[][] arrayOfArrays;
public static double[] Jan;
... //All of your months' variables, without assignment of course.
static Globals( ) {
    Jan = {Properties.Settings.Default.Jan1Costs,
           Properties.Settings.Default.Jan2Costs,
           Properties.Settings.Default.Jan3Costs,
           Properties.Settings.Default.Jan4Costs,
           Properties.Settings.Default.Jan5Cost,
           Properties.Settings.Default.Jan6Cost,
           Properties.Settings.Default.Jan7Cost};
    ... //Assign here the rest months' variables
    arrayOfArrays = {Jan,
                    Feb,
                    Mar,
                    Apr,
                    May,
                    Jun,
                    Jul,
                    Aug,
                    Sep,
                    Oct,
                    Nov,
                    Dec};
}

因此,所有arrayOfArrays数组都将被引用与该类中的变量相同的对象。