C# 中的数组声明语法是否有原因?

Is there a reason for array declaration syntax in C#?

我想知道语法背后的原因是什么?我的意思是这样的:

int[ , ] arrayName = new int[10,10];

如果我们有类似的东西,会不会更简单:

int[10,10] arrayName ;

是什么原因导致软件架构师做出这样的决定?

这个

int[ , ] arrayName = new int[10,10];

已经在内存中初始化变量并实例化。此外,您可以在运行时更改数组的大小,例如

arrayName = new int[20,20]

另一方面

int[10,10] arrayName ;

将只为数组声明变量。 arrayName然后还是null.

这是因为您可以在一个作用域中声明变量,然后在另一个作用域中对其进行初始化(通常在构造函数中)。

像这样:

public class Foo
{
    private int[ , ] Bar;  // Bar will be null until initialized

    public Foo(int a, int b)
    {
        Bar = new int[a, b];
    }
}
int[,] arrayName = new int[10,10];

只有左边在声明数组,右边在初始化它。对于 C# 中的大多数(如果不是全部)变量来说都是如此。例如

string test; //declaring
test = "test"; //initialising
string test = "test"; //declare and initialise

对于 int[10,10] arrayName;,您承诺数组大小。如果我这样做会发生什么?

int[10,10] arrayOne;
int[11,11] arrayTwo;

arrayOne = arrayTwo;

数组对象只是指向托管内存块的指针。知道这一点,arrayOne = arrayTwo 在技术上必须是合法的。

因此,说它是int[10,10]实际上是在撒谎。它可能以这种方式开始,但它可以随时重新分配到不同维度的数组中。