可以在不改变行为的情况下删除“条件表达式中的赋值”吗?

时间:2014-06-18 20:26:46

标签: c# refactoring resharper equality assignment-operator

重构遗留应用程序,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;
}

2 个答案:

答案 0 :(得分:2)

请勿将其删除。它正在调用该方法,它只是不使用它返回的值。

答案 1 :(得分:1)

如果删除它并删除了retVal的声明,那么如果在别处使用retVal,编译器会抱怨。如果编译器没有抱怨,那么你应该没问题。

可能原始开发人员希望能够在调试时查看返回值。