0

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

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

现在编译器会为这个表达式抛出编译错误。为什么,以及如何修复它以使其正常工作?

4

3 回答 3

2

您正在寻找“?” 内联“if/else”的运算符。

至于内联 switch 语句,我建议使用 staticDictionary代替;

所以你的线

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-19T16:43:40.177 回答
1

为什么:if .. else ..是一个陈述,而不是一个表达式。

方法:使用?运算符:

20+10+(20>10)?0.2:0.1+(case_condtion_1)?case_value_1:((case_condtion_2)?case_value_2:(...))
于 2013-05-19T16:31:29.550 回答
1

如果您喜欢使用if,可以像这样修改您的表达式:

20 + 10 + ((Func<double>) (() => { if (20 > 10){ return 0.2; } else { return 0.1; }}))();

但是,它真的会令人困惑。?最好像@Murkaeus 所说的那样使用运算符。

于 2013-05-19T17:04:51.590 回答