是否可以在条件表达式中进行赋值?在不改变行为的情况下被移除

本文关键字:改变 情况下 赋值 条件 表达式 是否 | 更新日期: 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,编译器将会报错。如果编译器没有报错,那么你应该没问题。

可能是最初的开发人员希望能够在调试时查看返回值