C# 不赋值的二维数组
我有一个二维数组,或者一组数组,看起来像这样:C# 不赋值的二维数组,c#,C#,我有一个二维数组,或者一组数组,看起来像这样: public static double[][] arrayOfArrays = {Jan, Feb, Mar, Apr,
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};
这些项中的每一项都是如下所示的数组:
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
提前感谢。尽量不要从
静态
变量中获取值,以计算静态
变量的值。例如,为什么:
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
的数组都将引用到与类中变量相同的对象。第二个方法有什么不起作用?或者是什么工作方式不同?有错误吗?你能用最少的样本代码重现它吗?e、 g.2x2阵列还是什么?这似乎很奇怪。还有,你为什么不在嵌套数组上使用嵌套列表呢?列表将更易于管理,而且列表通常比数组更受欢迎。有了一个好的代码示例,许多读者都可以轻松地帮助您解决这个问题。没有它,这将是非常困难的。您的总体理解似乎是正确的,因此您实际的代码可能与您发布的代码片段不同,或者您遗漏了一些关于这些片段之间关系的重要细节。请参阅@furkle No error,它只是没有赋值。另外,我不知道列表,所以我会试试。