我需要执行一个包含数学和条件语句以及switch语句的表达式。我试过的是这个:
20 + 10 + (if (20 > 10){ return 0.2; } else { return 0.1; }) //+ switch case
现在编译器会抛出此表达式的编译错误。为什么,以及如何解决它以便它确实有效?
答案 0 :(得分:2)
您正在为内联'if / else'寻找'?' operator。
对于内联切换语句,我建议使用静态Dictionary
;
所以你的行
20 + 10 +(if(20>10){ return 0.2} else{ 0.1 }) + switch case
变为
20 + 10 + (20 > 10 ? 0.2 : 0.1) + _switchDictionary[switchKey]
答案 1 :(得分:1)
原因:if .. else ..
是一个陈述,而不是表达。
执行此操作的方法:使用?
运算符:
20+10+(20>10)?0.2:0.1+(case_condtion_1)?case_value_1:((case_condtion_2)?case_value_2:(...))
答案 2 :(得分:1)
如果您想使用if
,可以像这样修改您的表达式:
20 + 10 + ((Func<double>) (() => { if (20 > 10){ return 0.2; } else { return 0.1; }}))();
但是,它真的会令人困惑。最好使用?
运算符,因为@Murkaeus说。