Магическое число также может быть числом со специальной, жестко закодированной семантикой. Например, я когда-то видел систему, в которой идентификаторы записей> 0 обрабатывались нормально, 0 сама была «новой записью», -1 была «это корень», а -99 была «это было создано в корне». 0 и -99 приведет к тому, что WebService будет предоставлять новый идентификатор.
Что плохого в этом, так это то, что вы повторно используете пространство (значение целых чисел для идентификаторов записей) для специальных способностей. Возможно, вы никогда не захотите создать запись с идентификатором 0 или с отрицательным идентификатором, но даже если это не так, каждый человек, который смотрит либо на код, либо на базу данных, может наткнуться на это и сначала запутаться. Разумеется, 22, 7, -12 и 620 также считаются магическими числами.
. ; -)
Random rand = new Random();
if (rand.Next(0, 2) == 0)
lnkEvents.CssClass = "selected";
else
lnkNews.CssClass = "selected";
Random.Next выбирает случайное целое число между нижней границей (включительно) и верхней границей (исключая).
Кажется, что то, что вы хотите сделать (выбрать между двумя значениями), более четко выражено с помощью метода Next
вместо метода NextDouble
.
const int ExclusiveUpperBound = 2;
if (new Random().Next(ExclusiveUpperBound) == 0)
Полученное значение «больше или равно нулю и меньше» ExclusiveUpperBound
.
Если вам нужна вероятность 50/50, я предлагаю:
Random rand = new Random();
if (rand.NextDouble() >= 0.5)
lnkEvents.CssClass = "selected";
else
lnkNews.CssClass = "selected";
Random.NextDouble ()
будет выберите любое двойное число от 0, но меньше 1.0. Большинство из этих чисел не равны нулю, поэтому ваше распределение не будет таким, как вы ожидаете.