0

在 C# 中创建锯齿状数组时,我无法理解这个问题。如果你看下面的代码,它编译得很好。但是,如果我采用将值分配给数组“位置”的 2 行并将它们从方法内移动到类本身内,编译器就会开始抱怨很多奇怪的错误。

起初我认为这是因为在类中使用了'new'关键字(一个类只是一个定义,而'new'指的是一个实例......你不能在定义中拥有一个实例,你能?)。但是后来我注意到在“places”的初始化中使用“new”关键字是可以的,即使它是在类中初始化的。请解释。

public class Place
{
string[][] places = new string[2][];
   public void enumerate()
   {
     places[0] = new string[] { "Canada", "United States" };
     places[1] = new string[] { "Calgary", "Edmonton", "Toronto" };

     Console.WriteLine(places[0][1]);
   }
}

编辑:明确地说,运行时会产生错误

public class Place
{
string[][] places = new string[2][];
places[0] = new string[] { "Canada", "United States" };
places[1] = new string[] { "Calgary", "Edmonton", "Toronto" };
   public void enumerate()
   {
     Console.WriteLine(places[0][1]);
   }
}

收到的错误“无法在变量声明中指定数组大小(尝试使用“新”表达式进行初始化)”“无效标记 =,{,在类中”“命名空间不能直接包含字段或方法等成员”

4

1 回答 1

3

当然你可以初始化一个交错数组,但是语法稍有不同:

public class Place
{
    private string[][] places = new string[2][]
    {
        new string[] { "Canada", "United States" },
        new string[] { "Calgary", "Edmonton", "Toronto" },
    };

    public void enumerate()
    {
        Console.WriteLine(places[0][1]);
    }
}
于 2013-08-22T21:01:51.543 回答