如何创建2个多维字符串数组(删除空字符串)?

时间:2012-06-25 07:05:03

标签: c# .net multidimensional-array

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

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

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

3 个答案:

答案 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));
    }
}

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