CodeQL 文档

对不可比较类型进行相等比较

ID: cs/equals-on-unrelated-types
Kind: problem
Security severity: 
Severity: error
Precision: high
Tags:
   - reliability
   - correctness
Query suites:
   - csharp-security-and-quality.qls

点击查看 CodeQL 存储库中的查询

对不可比较类型调用 x.Equals(y) 几乎总是返回 false。如果两个类没有共同的父类,则它们的实例被认为是不可比较的。

建议

仔细检查代码是否存在错误。

示例

在此示例中,无论 ArrayListString 的内容是什么,对 Equals 方法的两次调用都将始终返回 false,因为 ArrayListString 是不可比较的。

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

参考

  • ©GitHub 公司
  • 条款
  • 隐私