我需要执行一个包含数学和条件语句以及switch语句的表达式。我尝试的是这样的:
20 + 10 + (if (20 > 10){ return 0.2; } else { return 0.1; }) //+ switch case
现在,编译器抛出此表达式的编译错误。为什么?我如何才能修复它,使其正常工作?
发布于 2013-05-19 16:43:40
您正在查找内联'if/else‘的'?' operator。
至于内联switch语句,我建议使用静态Dictionary
;
所以你的台词
20 + 10 +(if(20>10){ return 0.2} else{ 0.1 }) + switch case
变成了
20 + 10 + (20 > 10 ? 0.2 : 0.1) + _switchDictionary[switchKey]
发布于 2013-05-19 16:31:30
if .. else ..
是一个语句,而不是一个表达式。
方法是:使用?
运算符:
20+10+(20>10)?0.2:0.1+(case_condtion_1)?case_value_1:((case_condtion_2)?case_value_2:(...))
发布于 2013-05-19 17:04:52
如果你喜欢使用if
,你可以像这样修改你的表达式:
20 + 10 + ((Func<double>) (() => { if (20 > 10){ return 0.2; } else { return 0.1; }}))();
但是,这真的会让人感到困惑。你最好像@Murkaeus一样使用?
操作符。
https://stackoverflow.com/questions/16636866
复制