是否可以在条件表达式中进行赋值?在不改变行为的情况下被移除
本文关键字:改变 情况下 赋值 条件 表达式 是否 | 更新日期: 2023-09-27 18:09:28
重构一个遗留应用程序,Resharper标记了这段非常奇怪的代码:
if( retVal = Util.NetSendCommand( returnedCommands.command ) )
"retVal ="部分是灰色的;所以我想我可以把它去掉。也许编写代码的人的意思是一个相等测试,但它是按预期工作的,所以我可以安全地删除"retVal ="正确吗?
更新下面是上下文中的代码:
public bool PendingCommandsExecute_CCRCOMMAND()
{
bool retVal = false;
string theMessage = new string( ''x00', 1023 );
string command = "CCRCOMMAND";
try
{
if (returnedCommands.key != command) return false;
HashResultsAdd(command, "Started");
if( retVal = Util.NetSendCommand( returnedCommands.command ) )
{
Util.ReadFinishedChanged
+= new Util.ReadFinishedHandler( ReadFinished_HHTCOMMAND );
}
else
{
return false;
// CommandFailed
// ( command
// , ": Could not complete server handshaking 'n"
// + "FAILURE - CCRCOMMAND!"
// );
}
}
catch (Exception ex)
{
PDAClient.NRBQ.ExceptionHandler(ex, "PendingCommands.PendingCommandsExecute.HHTCommand");
return false;
}
return true;
}
不要删除。它在调用那个方法,它只是不使用它返回的值
如果您删除它并同时删除了retVal的声明,那么如果在其他地方使用了retVal,编译器将会报错。如果编译器没有报错,那么你应该没问题。
可能是最初的开发人员希望能够在调试时查看返回值