При использовании больших логических массивов, например:
тот факт, что «истина» состоит из 4 символов, а «ложь» — 5, делает массив очень длинным. Он компактен в памяти, но не компактен в коде. Очевидно, что использование 0 и 1 не работает. Если бы я мог каким-то образом определить T как истинное, а F как ложное, это было бы великолепно.
В качестве обходного пути я попробовал использовать:
различными способами использовать битовую нотацию 0b011001001001, поскольку она ОЧЕНЬ компактна в коде И памяти, но, как ни странно, BitArray, похоже, не имеет способа использовать биты в этом формате (поражает меня). BitArray удобен тем, что вы все равно можете использовать компактный if(myBits[n]) без дополнительного " == 1", поскольку он естественным образом оценивается как true/false.
Единственное решение, которое я придумал, — это просто использовать массивы byte[]. Он довольно компактен в памяти, допускает 0 и 1 для массива, но не так компактен, как BitArray или bool[], и вам придется использовать « == 1» в операторах if. Я подумывал написать это таким образом для компактности кода, но позже преобразовать его в логический массив в памяти, но это кажется глупым.
Подробнее здесь:
https://stackoverflow.com/questions/798 ... rrays-in-c