You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#使用三元运算符抛异常提示throw间无隐式转换如何处理

问题原因

这个报错和C#版本、三元运算符的语法特性直接相关:
三元运算符属于表达式而非独立语句,要求两个分支必须返回可隐式转换的类型。C# 7.0之前throw是纯语句,没有返回类型,完全不满足三元运算符的类型要求,就会抛出你遇到的类型转换错误。

解决方案

方案1:C# 7.0及以上版本调整写法

C# 7.0开始支持throw作为表达式使用,但你需要给整个三元表达式加一个接收方,比如用弃元_接收结果即可正常运行:

_ = isCritical ? throw new CriticalException(a, b) : throw new FailException(a, b);

throw表达式支持隐式转换为任意类型,赋值给弃元完全合法,运行效果和你原来的if写法完全一致。

方案2:低版本C#/追求可读性

直接保留原来的if写法即可。分支抛异常的场景用if-else语义更清晰,可读性比强行用三元运算符更好。

内容的提问来源于stack exchange,提问作者user122222

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 05:57:00