仅当最后一个函数调用为false或者其中任何函数是否为false时,此代码是否返回false?

B. *_*non -2 c#

我遇到了这个遗留代码:

public static bool RemoveTempFiles()
{
    bool RetVal = true;

    RetVal &= RemoveFile(@"\", "*.csv");
    RetVal &= RemoveFile(@"\", "*.xml");
    RetVal &= RemoveFile(@"\", "*.txt");
    RetVal &= RemoveFile(@"\", "*.tmp");

    RetVal &= RemoveFile(GetDataPath(), "*.csv");
    RetVal &= RemoveFile(GetDataPath(), "*.xml");
    RetVal &= RemoveFile(GetDataPath(), "*.txt");
    RetVal &= RemoveFile(GetDataPath(), "*.tmp");

    return RetVal;
}
Run Code Online (Sandbox Code Playgroud)

...而且我不熟悉"&="运算符.

RemoveFile()删除所有提供扩展名的文件,除非遇到异常,否则返回true.

因为我不知道"&="我不知道是否有任何失败导致RemoveTempFiles()返回false或者如果最后一个(对于*.tmp文件)失败,它只会返回false(这就是我的意思期待代码乍一看,但这没有意义).

Bra*_*NET 6

如果任何被调用的函数返回false,则此代码将返回false.

每一行都像写作一样

retVal = retVal & RemoveFiles; // Or &&!
Run Code Online (Sandbox Code Playgroud)

显然,如果RemoveFiles返回false,则返回false,然后在此之后将始终返回false.

有关详细信息,请参阅MSDN.

  • 关于你的代码注释:在这种情况下不要使用`&&`!`&&`会短路,因此如果事先调用*RemoveFiles*确实将*retVal*设置为`false`,则会阻止调用*RemoveFiles*. (3认同)