AutoDesk Advance Steel中C# Script未执行分支仍报错问题咨询
问题根因
- C#原生三元运算符
?:为短路求值逻辑,匹配到符合的条件分支后,不会执行后续分支的代码,你遇到的报错并非全部分支强制求值导致。 - 核心错误为三元表达式各分支返回类型不兼容:前两个分支返回
string类型("TBD"、""),最后一个分支返回double类型,C#强类型检查规则要求三元表达式所有分支的返回类型必须支持隐式统一转换,类型不匹配会在编译阶段直接触发错误,不会进入运行时的分支判断流程。 - 附加语法问题:你提供的原代码缺少1个右括号,语法结构不完整。
修复方案
将最后一个分支的ILength显式转换为字符串,保证所有分支返回类型统一为string,同时补全语法括号,修正后的脚本如下:
= IName.Contains("Bent") ? "TBD" : (IClass.Contains("Nut") ? "" : ILength.ToString())
如果需要控制数值显示格式,可在ToString方法中传入格式参数,例如保留2位小数可写为ILength.ToString("F2");如果运行环境存在属性为空的风险,可改用更稳妥的Convert.ToString(ILength)做转换。
内容的提问来源于stack exchange,提问作者Julio Soto
相关产品推荐
相关产品推荐

