JetBrains Rider 2025.2 Help

代码检查:Math.Abs() 参数始终为非负数

此检查报告了 Math.Abs() 的使用,这些使用可能是多余的,因为它们的参数为非负数。

Math.Abs() 的目的是将可能为负数的数字转换为其非负等价物。 因此,如果已知参数为非负数,您可以安全地用参数的值替换 Math.Abs() 调用。

为了确定变量或参数的值始终为非负数,JetBrains Rider 依赖于 整数算术分析 ,该分析默认启用。

在下面的示例中,所有三处 Math.Abs() 的使用都会被报告,因为:

  • p1 被标记为来自 JetBrains.Annotations[NonNegativeValue] 属性,该属性添加了相应的契约,

  • p2 的类型为 uint ,该类型只能包含非负值,

  • p3 为非负数,因为它在源代码中被明确检查过。

public void Test([NonNegativeValue] int p1, uint p2, int p3) { Console.WriteLine("Abs 1:" + Math.Abs(p1)); Console.WriteLine("Abs 2:" + Math.Abs(p2)); if (p3 < 0) return; Console.WriteLine("Abs 1:" + Math.Abs(p3)); }
最后修改日期: 2025年 9月 26日