对不可比较类型进行相等比较¶
ID: cs/equals-on-unrelated-types
Kind: problem
Security severity:
Severity: error
Precision: high
Tags:
- reliability
- correctness
Query suites:
- csharp-security-and-quality.qls
对不可比较类型调用 x.Equals(y)
几乎总是返回 false。如果两个类没有共同的父类,则它们的实例被认为是不可比较的。
建议¶
仔细检查代码是否存在错误。
示例¶
在此示例中,无论 ArrayList
或 String
的内容是什么,对 Equals 方法的两次调用都将始终返回 false,因为 ArrayList
和 String
是不可比较的。
using System.Collections;
class IncomparableEquals
{
public static void Main(string[] args)
{
ArrayList apple = new ArrayList();
String orange = "foo";
Console.WriteLine(apple.Equals(orange)); // BAD
Console.WriteLine(orange.Equals(apple)); // BAD
}
}
参考¶
MSDN,Object.Equals 方法。