为什么这不能编译?

时间:2013-05-19 16:27:51

标签: c# .net switch-statement conditional

我需要执行一个包含数学和条件语句以及switch语句的表达式。我试过的是这个:

20 + 10 + (if (20 > 10){ return 0.2; } else { return 0.1; }) //+ switch case

现在编译器会抛出此表达式的编译错误。为什么,以及如何解决它以便它确实有效?

3 个答案:

答案 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说。