【发布时间】:2014-07-08 16:02:14
【问题描述】:
我知道锯齿状数组和多维数组之间存在差异。我知道使用“List”而不是数组的数组通常更受欢迎。
谁能解释一下,为什么在下面的代码中,第一个是允许的,而第二个是错误的?我只是想更好地理解 C#...
法律:
public class Banana
{
double[,] _banana;
public Banana(int h, int w)
{
_banana= new double[h,w];
}
}
非法(错误:需要一个常量值而不是 h 和 w):
public class Banana
{
double[][] _banana;
public Banana(int h, int w)
{
_banana= new double[h][w]{};
}
}
TL;DR;
为什么可以用变量初始化多数组的维度,而不是锯齿数组?
【问题讨论】:
-
如果你立即初始化两个维度的长度,这不是一个锯齿状数组。
-
C# 的设计者并不认为允许这种初始化程序是一个足够有用的功能,可以将其包含在语言中。如果您希望数组的所有元素具有相同的宽度,请使用二维数组;如果您希望它们可能不同,则需要自己分配它们。
-
因为规则是这样说的。你可以在 java 中做到这一点(它缺少第一种语法)——这不是某种固有的不可能。
标签: c# arrays multidimensional-array jagged-arrays