Скажем есть такой код:
using System;
class PERSONAGE
{
private int age;
private string name;
private string race;
private string gender;
public PERSONAGE(string n)
{
name = n;
Console.Write("Enter age of {0} ", name);
age = Convert.ToInt32(Console.ReadLine());
Console.Write("Enter race of {0} ", name);
race = Console.ReadLine();
Console.WriteLine("Enter gander of {0} ", name);
gender = Console.ReadLine();
Console.WriteLine("Was created new personage.");
Console.WriteLine("Name is {0}, age is {1}, race is {2} and gander is {3}", name, age, race, gender);
}
public int Get_Age() { return age; }
}
class Program
{
static void main()
{
bool work = true;
while (true) {
//Какой-то код
}}}
Как сделать так, что бы внутри цикла у пользователя поочередно запрашивались данные, имя возраст и т.д. и создавался новый экземпляр класса.
Либо вызывалась функция, которая это сделает.
Как реализовать это, ведь заранее мы не знаем, сколько будет таких экземпляров и их надо как-то именовать. Как реализовать такую "фабрику" экземпляров?
Надеюсь, что мне удалось объяснить то, что хочу.
List<PERSONAGE> Lst = new List<PERSONAGE>();
for (int i=0;i<I_DO_NOT_KNOW_HOW_MANY;i++) {
PERSONAGE P = new PERSONAGE("Person "+i);
// зделать что-то ищо з персонажем
Lst.Add(P);
}
На выходе получите список Lst содержащий всех ихъ созданных с именами "Person 1" ... "Person N" :-)
Олзо, в конструкторе консольный ввод данных делать я бы не рекомендовал... Лучше переделать конструктор чтобы он принимал уже все готовые параметры, а эти параметры предварительно собрать (можно в том же цикле или как угодно) вводом данных (с консоли, с формы, из файла загрузить, откуда угодно) с валидацией полноты и корректности, как положено. Ведь если у вас пользователь захочет прервать ввод данных - объект PERSONAGE будет создан, но не полноценно, без части свойств.
Создаете список персонажей, пока пользователь хочет создавать новых - создаёте и добавляете в список.
static void main()
{
bool work = true;
List<PERSONAGE> personages = new List<PERSONAGE>();
while (work)
{
Console.WriteLine("Добавить ещё одного персонажа (Y - Да, N - нет)?");
var choice = Console.ReadKey();
switch (choice.KeyChar.ToString().ToUpper())
{
case ("Y"):
{
Console.Write("Введите имя персонажа: ");
try
{
var personage=new PERSONAGE(Console.ReadLine());
personages.Add(personage);
}
catch (Exception ex)
{
Console.WriteLine($"Ошибка создания персонажа: {ex.Message}");
//Добавьте обработку ошибки
}
break;
}
case ("N"):
{
work = false;
break;
}
default:
{
Console.WriteLine("Ошибка! Введите Y или N!");
break;
}
}
}
}
Ну и потом что-нибудь делаем с получившимся списком персонажей.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Есть клиент для связи и редактирования базы, как узнать, открыта ли она уже другим пользователем на другом компьютере? Пока сам заметил, что...
Верный ли подход, или можно выполнить работу с датой прощеВ частности, необходимо выполнить выборку выборку полей из базы данных, значение...
Имеется 3 сущности: студент и преподаватель, унаследованные от простого класса User, и предметМне необходимо будет получать информацию об оценках...
Есть библиотека CheckUfadll В справке разработчика написано, что подключать, нужные мне функции, к Delphi проекту вот так: