В домашнем задании, при выполнение всегда ловлю исключение на строке
byte[] array = new byte[length];
После ряда неудач в собственной версии, решил переписать эту часть, так же как в уроке. Но это не помогает.
Console.WriteLine("Введите размер массива");
string userArraySiza = Console.ReadLine();
byte length = Convert.ToByte(userArraySiza);
byte[] array = new byte[length];
byte index = 0;
while (length <= array.Length)
{
array[index] = index;
Console.WriteLine($"{array[index]}");
index++;
}
У Вас цикл бесконечный, так как переменная length всегда равна тому что ввел пользователь с клавиатуры и значение длины массива всегда постоянное. В большинстве случаев, когда вы создаете цикл, вы должны убедится что переменные, которые в нем используются изменяются и рано или поздно цикл прекратит работу.
Вам можно указать while (index < array.Length). Именно < а не <= так как если у вас размер массива 10 то последний элемент будет с индексом 9. Если обратиться по индексу 10 будет ошикаб (скорей всего OutOfRangeException та же что и сейчас у вас возникает)
Если есть ошибки, то лучше вставляйте их текст в вопрос, перед или после кода. Потому что может я не внимательно посмотрел ваш код и ошибка в другом месте.
Ну и для подобной задачи - пройтись по всем элементам массива, лучше всего подходит цикл for, цикл while лучше использовать тогда, когда вы не знаете сколько заранее будет итераций. В данном случае вы знаете что вам нужно сделать столько итераций, сколько элементов в массиве. А цикл while (пока, до тех пор пока) используют чаще для задач похожих на эту, читать данные из файла до тех пор пока в файле есть строки.
1 Вподобання