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. |