这段代码是否只在最后一个函数调用为false时返回false,或者其中任何一个函数调用为false时返回false ?
本文关键字:false 返回 函数调用 或者 任何一 段代码 是否 最后一个 代码 | 更新日期: 2023-09-27 18:15:23
我遇到了这个遗留代码:
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;
}
…我不熟悉"&="运算符。
RemoveFile()删除所有带有所提供扩展名的文件,并返回true,除非遇到异常。
因为我不知道"&=",我不知道是否有任何失败导致RemoveTempFiles()返回false,或者如果最后一个(对于*.tmp文件)失败(这是我希望代码第一眼就能工作的方式,但这没有意义)。
如果任何调用的函数返回false,则此代码将返回false。
每一行就像写
retVal = retVal & RemoveFiles; // Or &&!
显然,如果RemoveFiles
返回false,则返回false,然后在此之后始终返回false。
如果RemoveFile
中只有一个返回false,则此代码返回false。
如http://msdn.microsoft.com/en-us/library/e669ax02.aspx所述,它与将与的结果与第二个变量(y
)赋值给第一个变量(x
)相同,因此它就像x= (x&y)
RetVal &= x
是RetVal = RetVal & x
的简写。因此,只有当所有值都为真时,结果才为真(当其中任何一个值为假时,结果为假)
如果您使用RetVal |= x
,那么如果任何值为真,结果将为真(如果所有值都为假,结果将为假)。