Давайте пройдемся по вашему коду для опции меню 1:
for (int i = 0; i < names.Length;)
{
Console.Write("name : ");
names[i] = Console.ReadLine();
Console.Write("number : ");
phonenumb[i] = Console.ReadLine();
i++;
break;
}
Он начинается все oop с i
, установленным в 0, и повторяется, пока i < names.Length
. На первой итерации l oop он присваивает names[i]
(что будет names[0]
) значение, считываемое с консоли, а затем номер телефона. i
затем увеличивается до 1
, и сразу после этого l oop прерывается.
Теперь представьте, что в следующий раз будет нажата 1
. Он все еще работает точно такой же код. L oop начинается с i
как 0, присваивается names[0]
и phonenumb[0]
, затем выходит из l oop. Не то, что вы хотите.
Хотите добавить oop для добавления новой строки? Если так, то почему? Это делает что-то больше, чем один раз? Нет. Это просто должно сделать одну вещь. Обратите внимание, что даже с вашим l oop вы всегда выбиваете l oop на первой итерации, так что это даже не al oop.
Недостающий фрагмент - это то, что вы хотите написать до names
и phonenumb
при разных индексах каждый раз. Для этого вам нужно иметь переменную, которая сохраняется в течение каждой итерации меню l oop. Если вы объявите что-то вроде int insertIndex = 0;
за пределами вашего меню l oop, тогда вы можете вместо этого изменить лог вставки c на что-то вроде этого:
Console.Write("name : ");
names[insertIndex] = Console.ReadLine();
Console.Write("number : ");
phonenumb[insertIndex] = Console.ReadLine();
insertIndex++;