Этот код описывает человека и систему создания ID.
class Program
{
static void Main()
{
Person person1 = new Person("Николай", 19);
Person person2 = new Person("Андрей", 25);
Person person3 = new Person("Сергей", 23);
Console.WriteLine("------------------------------");
person1.PrintInfo();
Console.WriteLine("------------------------------");
person2.PrintInfo();
Console.WriteLine("------------------------------");
person3.PrintInfo();
Console.WriteLine("------------------------------");
//Поиск по известному ID и вывод информации
Person.SearchByID(person2.ID).PrintInfo();
Console.WriteLine("------------------------------");
//Поиск по случайному ID (Несуществующему)
Person.SearchByID("25462");
}
}
public class Person : ID
{
static List<Person> persons = new List<Person>(); //Список созданных людей
private string name;
private int age;
readonly public string ID;
public string Name { get { return name; } set { name = value; } }
public int Age { get { return age; } set { age = value; } }
public Person(string name = "Неизвестно", int age = 18)
{
ID = CreateID(); //Случайная генерация ID (ID не может повторяться)
Name = name;
Age = age;
Console.WriteLine($"Человек {name} создан");
persons.Add(this);
}
public void PrintInfo()
{
Console.WriteLine($"Имя: {name}\nВозраст: {age}\nID: {ID}");
}
public static Person SearchByID(string id)
{
Console.WriteLine($"Поиск пользователя по ID {id}");
for (int i = 0; i < persons.Count; i++)
{
if (persons[i].ID == id)
{
Console.WriteLine("Результат найден!");
return persons[i];
}
}
Console.WriteLine("Человека с таким ID не существует!");
return null;
}
}
abstract public class ID
{
private List<string> ids = new List<string>(); //Список существующих ID
protected string CreateID(int format = 4)
{
Random rnd = new Random();
string id = "";
for (int i = 0; i < format; i++)
{
id += rnd.Next(0, 10);
}
//Создание ID до тех пор, пока он не будет уникальным
while (CheckID(id))
{
for (int i = 0; i < format; i++)
{
id += rnd.Next(0, 10);
}
}
ids.Add(id);
return id;
}
//Проверка уникальности ID
private bool CheckID(string id)
{
for (int i = 0; i < ids.Count; i++)
{
if (ids[i] == id)
return true;
}
return false;
}
}
Можете написать о ошибках и недочётах этого кода, я был бы очень рад пополнить свои знания
IDуникальный, лучше поиск делать не перебором списка заO(n), а брать заO(1)нужного человека поIDиз словаря форматаID->Person. – CrazyElf Oct 01 '23 at 11:14<AnalysisMode>all</AnalysisMode>, чтобы активировать все. Ворнингов на ваш код станет выдаваться намного больше. Конечно, не все их нужно исправлять, как там будет рекомендовано, но рассмотреть стоит. – Alexander Petrov Oct 01 '23 at 16:32