优化导致无法访问的代码

时间:2010-08-30 07:40:25

标签: c# winforms

我创建了一个标志Method1HasExecuted,我想要实现的逻辑是,如果那个标志是真的,我需要做 这个函数rp = Spa.Modify(val);否则将rp返回为false。因为我确实喜欢这个

        if (Method1HasExecuted)
        {
            rp = Spa.Modify(val);//Save operation, this function also return boolean value
        }
        else rp = false;

然后为了优化,我使用了三元运算符并且确实喜欢这个

return Method1HasExecuted ? Spa.ClientModify() : false;

但通过这样做,我看到一些无法访问的代码已经存在,就像这样

1.如何使它可以到达或者这里不需要使用三元运算符?

2.在阻塞后,我们可以看到底部的return retval;是必需的,因为所有工作的结果都是真的 将执行保存操作或错误意味着显示serverdown,这已经在我的工作中

对于第二个问题,整个结构现在就像这样

3 个答案:

答案 0 :(得分:1)

您的问题是您正在使用RETURN ..

你应该这样做:

rp = Method1HasExecuted ? Spa.ClientModify() : false;

其余应该是相同的..

记住..返回只会返回:)

答案 1 :(得分:1)

您将if-else语句转换为三元运算符,但您还添加了一个return语句。问题是return语句总是会返回,所以如果你的代码中的代码低于该方法,那么它将永远不会被执行。

您可以保留三元运算符,只是不要返回:

rp = Method1HasExecuted ? Spa.ClientModify() : false;

三元运算符将生成非常类似于之前if-else语句的IL。它不会实质上更快,所以只有在你认为它提高了代码的可维护性或可读性时才使用它。

答案 2 :(得分:1)

实际上,你应该这样做:

rp = Method1HasExecuted && Spa.ClientModify();