所以我有一个二维数组或一个数组数组,如下所示:
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。
提前致谢。
答案 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
数组都将被引用与该类中的变量相同的对象。