var movieNext = new string[,]
{
{ "superhero", "action", "waltdisney", "bat"},
{"superhero", "action", "marvel",""},
{"history", "action", "malay", "" },
{"malay", "novel", "", ""},
{"history", "bat", "", ""}
};
上面的代码是一个多维数组,它存储一系列电影的关键字。有没有办法实现这个而不必将空字符串放在数组初始化中?
例如,你可以在上面的代码中看到,我必须把空白字符串“”填满数组。
答案 0 :(得分:2)
您可以使用jagged array代替。
string[][] movieNext = new string[][] { { etc... } }.
答案 1 :(得分:1)
您可以考虑使用C#锯齿状数组(尽管它们与多维数组不同)。
string[][] movieNext = {
new [] { "superhero", "action", "waltdisney", "bat"},
new [] {"superhero", "action", "marvel"}, <and so on>
};
如果您想坚持使用多维数组,则必须单独初始化值。如果您没有为任何索引(i,j)提供任何字符串值,则默认情况下它将为null。
答案 2 :(得分:0)
我建议永远不要使用二维数组。它们在API中几乎没有任何支持(您很难找到接受二维数组作为参数的方法),并且不能转换为IEnumerable<T>
或类似的良好支持的接口。因此,您只能在最本地的范围内使用它们。
相反,我建议你使用一些可投射到IEnumerable<IEnumerable<string>>
的东西。哦,另一个提示。检查this。具体来说,
要初始化Dictionary或Add方法采用多个参数的任何集合,请将每组参数括在大括号中,如下例所示。
因此,以下内容将起作用:
class Program
{
static void Main(string[] args)
{
var d = new ManyList()
{
{"Hi", "Good", "People", "None", "Other"}
{"Maybe", "Someone", "Else", "Whatever"}
};
Console.Read();
}
}
class ManyList : List<string>
{
public void Add(params string[] strs)
{
Console.WriteLine(string.Join(", ", strs));
}
}
这可能会帮助您稍微清理一下语法。