c#,在尝试从二维数组中获取值并在TryParse中使用时抛出错误


private static char[,] boardValues = {
{'1', '2', '3'},
{'4', '5', '6'},
{'7', '8', '9'}
};
public static bool SetPlayerLocation(int[] location, char character)
{
// check if slot is taken
if (byte.TryParse(boardValues[location[0],location[1]], out _))
{
boardValues[location[0], location[1]] = character;
return true;
}
else
{
return false;
}
}

这一直抛出错误,不能从'char'转换为'System.ReadOnlySpan<char>',在if语句行。

你从来没有说过你所说的"拿走"是什么意思。但它看起来像是"在'0''9'之间的一个字符"。——也许是一个"没人"的位置。包含空格' ''x'。或类似的. .

你看到的这段代码,本质上是用来检查是否存在一个数字,对于这个,我建议:

private static char[,] boardValues = {
{'1', '2', '3'},
{'4', '5', '6'},
{'7', '8', '9'}
};
public static bool SetPlayerLocation(int[] location, char character)
{
var slotTaken = Char.IsDigit(boardValues[location[0],location[1]]);
if (slotTaken)
boardValues[location[0], location[1]] = character;

return slotTaken;
}

如果我们用一个合理的变量名使代码更具有自我文档性,我们可以去掉注释…

. .这让我怀疑逻辑是否真的正确——如果一个插槽被占用了,那么你就可以替换它?

变量应该命名为slotFree吗?if应该是if(!slotTaken)吗,或者玩家可能只占据一些位置是正确的吗?只有你知道这一点,但它是一个很好的介绍,如何创建自文档,可读的代码可以帮助通知其他人阅读它(当你离开时接替你工作的人:D)或发现bug

相关内容

  • 没有找到相关文章

最新更新