在C#中,我经常需要将整数值限制在一定范围内。例如,如果应用程序期望一个百分比,那么来自用户输入的整数必须不小于零且不大于一百。另一个例子:如果有五个网页可以通过
我通常最终编写出相当丑陋的代码,类似于:
Request.Params["p"]
访问,我期望的值是1到5之间的值,而不是0、256或99999等其他值。我通常最终编写出相当丑陋的代码,类似于:
page = Math.Max(0, Math.Min(2, page));
甚至更难看:
percentage =
(inputPercentage < 0 || inputPercentage > 100) ?
0 :
inputPercentage;
有没有更聪明的方法可以在 .NET Framework 中完成这样的事情?
我知道我可以编写一个通用方法 int LimitToRange(int value, int inclusiveMinimum, int inlusiveMaximum)
并在每个项目中使用它,但也许框架中已经有一个神奇的方法了吗?
如果我需要手动实现,那么在第一个示例中我正在做的“最佳”(即更少丑陋且更快)方式是什么?类似于这样的东西?
public int LimitToRange(int value, int inclusiveMinimum, int inlusiveMaximum)
{
if (value >= inclusiveMinimum)
{
if (value <= inlusiveMaximum)
{
return value;
}
return inlusiveMaximum;
}
return inclusiveMinimum;
}