gpt4 book ai didi

c# - 我在哪里可以找到 .NET 中的 "clamp"函数?

转载 作者:太空宇宙 更新时间:2023-11-03 15:21:08 31 4
gpt4 key购买 nike

我想将值 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 核心 2.0

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

using System;

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

关于c# - 我在哪里可以找到 .NET 中的 "clamp"函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37368328/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com