C# 在多维字符串数组中搜索字符串并获取项的索引
我一直在尝试获取数组中字符串的索引,并使用array.IndexOf方法返回该字符串的值,因为其他人告诉我该方法有效,但我一直收到一个错误。我的代码打错了还是怎么了C# 在多维字符串数组中搜索字符串并获取项的索引,c#,arrays,string,C#,Arrays,String,我一直在尝试获取数组中字符串的索引,并使用array.IndexOf方法返回该字符串的值,因为其他人告诉我该方法有效,但我一直收到一个错误。我的代码打错了还是怎么了 private string getBlockDataOrName(string nameOrData, string index) { String[,] blocks = {{ "stone", "grass", "dirt", "trees"
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)];
}
谢谢,这起作用了,还帮我省去了一些其他东西的麻烦不,没有。我只是运行了它,我不是在谈论正确性,而是它背后的实践和语义。