在哪里可以找到.NET中的“ clamp”功能?

我想将值限制x在一个范围内[a, b]

x = (x < a) ? a : ((x > b) ? b : x);

这是很基本的。但是我没有在类库中看到函数“ clamp”-至少没有System.Math

(对于不知道“钳位”的值是要确保它介于某些最大值和最小值之间。如果该值大于最大值,则将其替换为最大值,等等。)

回答:

您可以编写一个扩展方法:

public static T Clamp<T>(this T val, T min, T max) where T : IComparable<T>

{

if (val.CompareTo(min) < 0) return min;

else if(val.CompareTo(max) > 0) return max;

else return val;

}

编辑:扩展方法进入静态类-

由于这是一个低级功能,它可能应该进入项目的某些核心名称空间。然后,您可以在包含名称空间的using指令的任何代码文件中使用该方法,例如

using Core.ExtensionMethods

int i = 4.Clamp(1, 3);

回答:

从.NET Core 2.0开始,System.Math现在有一种Clamp方法可以代替使用:

using System;

int i = Math.Clamp(4, 1, 3);

以上是 在哪里可以找到.NET中的“ clamp”功能? 的全部内容, 来源链接: utcz.com/qa/420560.html

回到顶部