Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 不赋值的二维数组_C# - Fatal编程技术网

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,它只是没有赋值。另外,我不知道列表,所以我会试试。