CodeQL 文档

潜在的 CompareTo(…) 签名错误

ID: cs/wrong-compareto-signature
Kind: problem
Security severity: 
Severity: warning
Precision: medium
Tags:
   - reliability
   - maintainability
Query suites:
   - csharp-security-and-quality.qls

点击查看 CodeQL 代码库中的查询

如果您希望使类与类型 T 具有可比性,则应同时创建一个 CompareTo(T) 方法并继承 IComparable<T> 接口。如果已添加 CompareTo(T) 方法但未实现该接口,则有时表明程序员忘记了继承该接口,尽管已为其提供了实现。

建议

可以通过使类实现 IComparable<T> (直接或间接)轻松解决此问题。

示例

在此示例中,开发人员实现了一个 CompareTo(Bad) 方法,但忘记了添加相应的 IComparable<Bad> 接口。

using System;

class Bad
{
    public int CompareTo(Bad b) => 0;
}

在修改后的示例中,添加了该接口。

using System;

class Good : IComparable<Good>
{
    public int CompareTo(Good g) => 0;
}

参考

  • ©GitHub 公司
  • 条款
  • 隐私