C#三元运算符转换CHAR失效问题求助
C# 三元运算符转换进制字符故障排查
问题根源
你的代码存在两个核心问题:
- 语法错误:三元运算符的括号位置完全错误,正确结构应为
条件 ? 真值表达式 : 假值表达式,你把真值分支的括号写反了,编译器根本无法识别。 - 逻辑与类型错误:
n += 55是赋值操作,会直接修改原变量n的值,这和你用if-else时的逻辑不一致(if-else里应该只是计算对应字符,不会改动n);- 三元运算符的两个分支必须返回相同类型,你的代码里既有int类型(
n)又有char类型,会触发类型不兼容报错。
修正后的代码
// 修正语法,统一返回char类型,避免修改原变量n nConverti += (pNewbase > 10 && n >= 10) ? (char)(n + 55) : (char)n; nConverti += Depiler(ref unePile);
关键注意事项
- 不要在三元运算符的表达式里使用赋值语句(比如
n +=55),只需要计算出目标值即可; - 强制两个分支都返回
char类型,保证和nConverti(应该是字符串类型)拼接时的类型兼容性; - 原代码的括号错误是直接导致运行失败的首要原因,修正后语法才能正常通过编译。
内容的提问来源于stack exchange,提问作者Ralh19
相关产品推荐
相关产品推荐

