#c# #arrays #merge
Вопрос:
Я готовлю практический экзамен на получение водительских прав. Пользователи могут выбирать несколько категорий для получения вопросов. Я хочу взять билеты из этих массивов и поместить их все в один массив. Это мой код:
public Ticket[] GetTickets(int numOfCat) { bool getTicks = true; if (getTicks) { System.Console.WriteLine(DrivingLicenceStorage.Categories.Length); for (int i = 0; i lt; numOfCat; i ) { System.Console.Write($"Enter category N{i 1}: "); var Ids = Convert.ToInt32(Console.ReadLine()); if (Ids gt; DrivingLicenceStorage.Categories.Length) { System.Console.WriteLine("Invalid Input"); System.Console.WriteLine("Try Again"); i--; } else { Tickets = DrivingLicenceStorage.Categories.ElementAt(Ids).Tickets; getTicks = false; } } } return Tickets; }
Проблема в том, что Tickets
получает билеты из последней категории, в которую входит пользователь. Как объединить билеты всех выбранных категорий?
Комментарии:
1. Я думаю, также следует отметить, что настройка
getTicks = false;
не имеет никакого эффекта, так как она проверяется перед входом в цикл for и никогда не используется после первоначальной проверки.
Ответ №1:
Массивы не являются подходящим типом данных для списков с динамическим числом элементов. Вместо этого вы можете использовать a Listlt;Ticketgt;
.
Пример кода:
var ticketList = new Listlt;Ticketgt;(); ... // repeat as often as required ticketList.AddRange(DrivingLicenceStorage.Categories.ElementAt(Ids).Tickets); ... return ticketList.ToArray();
Комментарии:
1. @niniasabadze если ответ вас устроит, пожалуйста, отметьте его как принятый (галочка слева от ответа)