代码检查:根据位掩码的值,表达式结果将始终相同
该检查会报告枚举位掩码比较,虽然看起来是动态的,但由于位掩码的原因,结果总是相同。 通常出现在将 & 或 | 的结果与永远无法匹配的标志组合进行比较的代码中。
示例
[Flags]
enum Box
{
Long = 1,
High = 2,
Colorful = 4
}
bool HasColor(Box box)
{
return (box & Box.High) == Box.Colorful;
}
[Flags]
enum Box
{
Long = 1,
High = 2,
Colorful = 4
}
bool HasHigh(Box box)
{
return (box & Box.High) == Box.High;
}
修正方法
此检查没有专用的快速修复。 解决方法是与掩码实际可能产生的标志组合进行比较。
2026年 5月 8日