我创建了一个标志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,这已经在我的工作中
对于第二个问题,整个结构现在就像这样
答案 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();