В С# мне часто приходится ограничивать целочисленное значение диапазоном значений. Например, если приложение ожидает процент, целое число от пользовательского ввода не должно быть меньше нуля или более ста. Другой пример: если есть пять веб-страниц, к которым осуществляется доступ через 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;
}