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