潜在的 CompareTo(…) 签名错误¶
ID: cs/wrong-compareto-signature
Kind: problem
Security severity:
Severity: warning
Precision: medium
Tags:
- reliability
- maintainability
Query suites:
- csharp-security-and-quality.qls
如果您希望使类与类型 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;
}
参考¶
MSDN:IComparable 接口