The analyzer has detected that there is a bitwise 'AND' (&) operation with an operand equal to 0. A code fragment may contain incorrect operator or operand.
Example:
public enum TypeAttr { NotPublic = 0x0, Public = 0x1, NestedPublic = 0x2, NestedPrivate = 0x3 } public static bool IsNotPublic(TypeAttr type) { return (type & TypeAttr.NotPublic) == TypeAttr.NotPublic; }
The 'IsNotPublic' method checks if the argument of the 'TypeAttr' type has the 'NotPublic' flag.
Such a method of checking doesn't have any practical sense since the 'TypeAttr.NotPublic' flag has a zero value, which means using this flag as an operand of the '&' operator always results in a zero value. Thus, in the presented implementation, we always get the true condition.
The correct implementation of the check may look as follows:
public static bool IsNotPublic(TypeAttr type) { return type == TypeAttr.NotPublic; }
The analyzer will also issue a warning for the use of the operand that is '0' with the '&=' operator. This code also looks questionable, because if one of the operands is '0', the result of the expression is also '0'.
This diagnostic is classified as:
You can look at examples of errors detected by the V3181 diagnostic. |