我一直在尝试获取数组中字符串的索引并使用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”类型异常
其他信息:此处仅支持单维数组。
我不知道这只会对单维数组有效。
答案 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)];
}