1
var movieNext = new string[,]
{
    { "superhero", "action", "waltdisney", "bat"}, 
    {"superhero", "action", "marvel",""}, 
    {"history", "action", "malay", "" },
    {"malay", "novel", "", ""}, 
    {"history", "bat", "", ""}
};

上面的代码是一个多维数组,里面存储了一系列电影的关键字。有没有办法实现这一点而不必将空白字符串放入数组初始化中?

例如你可以在上面的代码中看到,我必须把空白字符串“”来填充数组。

4

3 回答 3

2

您可以改用锯齿状数组

string[][] movieNext = new string[][] { { etc... } }.
于 2012-06-25T07:18:11.503 回答
1

您可以考虑 C# 锯齿状数组(尽管它们与多维数组不同)。

string[][] movieNext =  {
new [] { "superhero", "action", "waltdisney", "bat"},
new []  {"superhero", "action", "marvel"}, <and so on>
};

如果要坚持使用多维数组,则必须单独初始化值。如果您没有为任何索引 (i,j) 提供任何字符串值,默认情况下它将为空。

于 2012-06-25T07:22:53.130 回答
0

我建议永远不要使用二维数组。它们在 API 中几乎没有支持(您将很难找到接受二维数组作为参数的方法),并且不能转换为IEnumerable<T>或类似的良好支持的接口。因此,您实际上只能在最本地的范围内使用它们。

相反,我建议您使用可铸造的东西来IEnumerable<IEnumerable<string>>. 哦,另一个提示。看看这个。具体来说,

要初始化 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));
    }
}

这可能会帮助您稍微清理一下语法。

于 2012-06-25T08:33:33.543 回答