C#三目表达式报错:int与string无隐式转换的问题如何解决
错误原因
三元运算符的两个返回分支必须使用可隐式转换的类型,你当前代码中:
- 条件不成立的分支返回
int类型的-1 - 条件成立的分支返回
string类型的text2
二者不存在隐式转换关系,因此触发编译错误。
修复方案
你只需要将-1转换为字符串类型,保证两个分支返回值类型统一即可,修改后的报错行代码如下:
int num = Conversions.ToInteger((!Versioned.IsNumeric(text2)) ? "-1" : text2);
可选优化(更符合C#原生开发习惯)
你当前用的Conversions、Versioned.IsNumeric都是VB.NET兼容库的类,如果你想脱离VB兼容依赖,可以直接用C#原生的int.TryParse实现相同逻辑,代码更简洁安全:
if (!int.TryParse(text2, out int num)) { Interaction.MsgBox(string.Format("Entering characters is not allowed ---> {0}", text2), MsgBoxStyle.Critical, Class10.string_4); } // 后续逻辑保持不变即可
内容的提问来源于stack exchange,提问作者user16535021
相关产品推荐
相关产品推荐

