C#将二维char数组元素传入TryParse时触发类型转换错误如何解决?
报错原因
byte.TryParse 方法不存在接收char类型输入参数的重载,你代码中通过boardValues[location[0],location[1]]取到的是char类型值,编译器匹配重载时尝试将char隐式转换为参数要求的System.ReadOnlySpan<char>,但两种类型没有对应的隐式转换规则,因此抛出该错误。
解决方案
提供两种可行方案,可根据需求选择:
- 方案1:最小改动适配原有逻辑
只需将取到的char值转为字符串后再传入TryParse即可,修改后的if判断语句如下:if (byte.TryParse(boardValues[location[0],location[1]].ToString(), out _)) - 方案2:优化判断逻辑,执行效率更高
你的核心需求是判断当前格子是否为未被占用的初始数字字符,无需走数值解析逻辑,直接判断字符范围即可,代码更简洁性能也更好:if (boardValues[location[0], location[1]] is >= '1' and <= '9')
内容的提问来源于stack exchange,提问作者Damiisdandy
相关产品推荐
相关产品推荐

