【发布时间】:2010-07-04 23:47:23
【问题描述】:
在 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;
}
【问题讨论】:
标签: c# .net performance math