нашел в исходнике BitArray такую запись:
/*=========================================================================
** Sets all the bit values to value.
=========================================================================*/
public void SetAll(bool value) {
int fillValue = value ? unchecked(((int)0xffffffff)) : 0;
int ints = GetArrayLength(m_length, BitsPerInt32);
for (int i = 0; i < ints; i++) {
m_array[i] = fillValue;
}
_version++;
}
0xffffffff это -1, тогда почему оно заменяет 1(true) и почему бы просто не поставить 1?
Для читаемости, как бы это не казалось странным.
Задача этого кода: создать массив int
в котором каждый бит заполнен заданным значением. Если передано значение true, то каждый элемент массива должен получить двоичное значение 1111111111111111111111111111111111111111 — 32 единицы, или 0xFFFFFFFF в шестнадцатеричном формате.
Соответственно, т.к. в коде написано 0xffffffff, то сразу понятно, что заполняются 4 байта единиц. Если бы было написано -1, то результат был бы тот же, но при чтении кода возник бы вопрос: почему используется именно минус единица и как она связана с заполнением битов.
Манипуляции с unchecked
и приведением типа вызваны тем, что значение 16-ричного литерала выходит за допустимые пределы int, и без них код не удалось бы скомпилировать.
почему бы просто не поставить 1?
1 это другое значение, в котором не все биты заполнены.
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
Доброе времени сутокВозникла необходимость делиться информацией между двумя приложениями
Потребовалось мне создать службу Windows и десктопное приложениеОбе этих программы, в идеале, должны работать с одной и той же коллекцией пользовательского...
Как запретить игроку отклонять от оси x и y? Чтобы он ходил ровно по оси x и y
Интересует вопрос как в combobox реализовать поиск не по первой букве/цифре/символу, а по вхождению в строку?