Ваш цикл никогда не заканчивается, потому что byte
является беззнаковым, 8-разрядным целым числом с действительными значениями в диапазоне от 0 до 255.
Так что, когда i == 255
и тело цикла завершается , происходит другое приращение. Однако из-за диапазона byte
это не вызывает i
равным 256
(он не может!), Что, в свою очередь, приведет к завершению цикла. Вместо этого он переполняется и перекатывается до 0
. Итак, цикл продолжается (и снова и снова ...). Это относительно распространенная ошибка при использовании счетчиков циклов без знака.
Тем временем ваш список растет, пока вы не запустите OOM. Здесь нет оснований использовать byte
; просто используйте int
и добавьте его в свой список: i
.
Это 32-битный процесс? Каково ваше потребление памяти? –
Возможно, вам стоит научиться избегать использования циклов 'for' в' C# '. – Aron