代码检查:Math.Abs() 参数始终为非负值
此检查报告了 Math.Abs() 的用法,这些用法可能是多余的,因为它们的参数为非负值。
Math.Abs() 的目的是将可能为负的数字转换为其非负等价值。 因此,如果已知参数为非负值,您可以安全地用参数的值替换 Math.Abs() 调用。
为了确定变量或参数的值始终为非负值,ReSharper 依赖于 整数算术分析 ,该分析默认启用。
在下面的示例中,所有三处 Math.Abs() 的用法都将被报告,因为:
p1被标记为[NonNegativeValue]属性,该属性来自 JetBrains.Annotations ,并添加了相应的契约。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月 27日