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

C# 在多维字符串数组中搜索字符串并获取项的索引,c#,arrays,string,C#,Arrays,String,我一直在尝试获取数组中字符串的索引,并使用array.IndexOf方法返回该字符串的值,因为其他人告诉我该方法有效,但我一直收到一个错误。我的代码打错了还是怎么了 private string getBlockDataOrName(string nameOrData, string index) { String[,] blocks = {{ "stone", "grass", "dirt", "trees"

我一直在尝试获取数组中字符串的索引,并使用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”的未处理异常

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

我不知道这将如何仅在一维数组上工作

“我不认为这只能在一维数组上工作。”


这只是函数
IndexOf
的设计方法,它返回一个int值,而不是多个值,并且除了一维数组之外不支持任何东西您可以尝试使用锯齿数组,如下所示:

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)];

}

谢谢,这起作用了,还帮我省去了一些其他东西的麻烦不,没有。我只是运行了它,我不是在谈论正确性,而是它背后的实践和语义。