在多维字符串数组中搜索字符串并获取item的索引

时间:2014-08-28 17:02:04

标签: c# arrays string

我一直在尝试获取数组中字符串的索引并使用Array.IndexOf方法返回它的值,因为其他人告诉我它有效,但我一直收到错误。我输入的代码是错误的吗?

private string getBlockDataOrName(string nameOrData, string index)
{
    String[,] blocks = {{ "stone", "grass", "dirt", "trees", "logs", "shovel", "bedrock" },
                        { "6", "0", "2", "0", "5", "5", "0" }};

    if (nameOrData == "Data")
        return blocks[1, Array.IndexOf(blocks, index)];
    else
        return blocks[0, Convert.ToInt64(index)];

}

以下是我不断收到的错误:

  

mscorlib.dll中出现未处理的“System.RankException”类型异常

     

其他信息:此处仅支持单维数组。

我不知道这只会对单维数组有效。

2 个答案:

答案 0 :(得分:0)

  

"我不知道这将如何仅适用于单维数组。"

它只是函数IndexOf的设计方式,它返回一个int,而不是多个值,并不意味着支持除了一维数组之外的任何东西

答案 1 :(得分:0)

您可以尝试使用锯齿状数组,如下所示:

private string getBlockDataOrName(string nameOrData, string index)
{
    String[][] blocks = {
                            new []{ "stone", "grass", "dirt", "trees", "logs", "shovel", "bedrock" },
                            new []{ "6", "0", "2", "0", "5", "5", "0" }
                        };

    if (nameOrData == "Data")
        return blocks[1][Array.IndexOf(blocks[1], index)];
    else
        return blocks[0][Convert.ToInt64(index)];

}