The analyzer detected that overridden method 'Equals(object obj)' might throw an exception.
Consider the following example:
public override bool Equals(object obj) { return obj.GetType() == this.GetType(); }
If the 'obj' argument is null, a 'NullReferenceException' will be thrown. The programmer must have forgotten about this scenario when implementing the method. Use a null check to make this code work properly:
public override bool Equals(object obj) { if (obj == null) return false; return obj.GetType() == this.GetType(); }
Another poor practice when implementing the 'Equals(object obj)' method is to explicitly throw an exception from it. For example:
public override bool Equals(object obj) { if (obj == null) throw new InvalidOperationException("Invalid argument."); return obj == this; }
This method is very likely to be called in such a block of code where exception throwing and handling are not expected.
If one of the objects does not meet the conditions, return 'false':
public override bool Equals(object obj) { if (obj == null) return false; return obj == this; }
This diagnostic is classified as:
You can look at examples of errors detected by the V3115 diagnostic. |