【发布时间】:2021-11-26 13:06:21
【问题描述】:
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;
}
}
这一直抛出错误,无法在if 语句的行上从“char”转换为“System.ReadOnlySpan<char>”。
【问题讨论】:
-
有no overload of
byte.TryParsewhich takes achar。你可能需要先把它变成一个字符串:byte.TryParse(boardValues[...].ToString(), out _) -
但是,只检查 char 是否在 0 到 9 之间会更好吗?
if (boardValues[...] is >='0' and <='9') -
@CaiusJard 是的,尽管从中减去“0”更容易
-
哈,是的,我忘记了这些事情。虽然只有一个按键:D
-
我查看了 TryParse 并假设您正在尝试转换,例如一个 char
'0'到一个数字0,所以我指出你可以通过减去 0x30('0' 的十六进制代码,我发现它比十进制 48 更容易记住,因为 0x30 和 0 都是以 0 结尾,“7”的十六进制代码是 0x37 等)。然后安东尼指出,减去'0'会更容易......
标签: c# arrays multidimensional-array