我在使用C#创建锯齿状数组时无法理解这个问题。如果你看下面的代码,它编译得很好。但是,如果我将2行分配给数组“places”并将它们从方法中移到类本身内,编译器会开始抱怨很多奇怪的错误。
起初我认为这是因为在一个类中使用了'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]);
}
}
收到错误“无法在变量声明中指定数组大小(尝试使用”new“表达式初始化)”“无效的tokens =,{,在类”“命名空间中不能直接包含诸如字段或方法之类的成员”
答案 0 :(得分: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]);
}
}