Удаление n-ого элемента структуры c#
Вот структура которая состоит из имени и возраста человека. Как из нее удалить n-ый элемент и вывести структуру уже без него? Или можно только создать новую структуру и скопировать в нее все кроме n элемента?
public struct mans
{
public string name;
public int age;
public mans(string _name, int _age) : this()
{
this.name = _name;
this.age = _age;
}
}
static void Main(string[] args)
{
List<mans> man = new List<mans>();
int m = 4;
for(int i=0; i<m; i++)
{
string oneMan = Convert.ToString(Console.ReadLine());
string[] wrMan = oneMan.Split(new char[] { ' ' });
man.Add(new mans(wrMan[0], Convert.ToInt32(wrMan[1])));
}
for(int i=0; i<m; i++)
{
WriteLine(man[i].name + " " + man[i].age);
}
int n=Convert.ToInt32(Console.ReadLine());
}
Ответы (1 шт):
Автор решения: aepot
→ Ссылка
Все смешалось...кони...люди...
- Структура - это данные об одном человеке, так? Почему вы назвали этот тип
mans? Ведь в переводе на русский было бы mans - это "люди", но нет такого слово в английском, есть people "люди" и men - "мужики". Если имеется в виду человек, персона, то и назовите типPerson. В C# типы - структуры и классы называют с большой буквы.
Структура будет выглядеть так.
public struct Person
{
public string name;
public int age;
public Person(string _name, int _age)
{
name = _name;
age = _age;
}
}
Теперь код.
List<mans> man- список типа "мужики" вы называете "мужик", даже если не учитывать трудности перевода, все должно быть наоборот. Назовитеpersons.Convert.ToString(Console.ReadLine());преобразованиеstringвstring, это как закрашивать синее пятно синей ручкой в тетради. Совершенно бесполезно. Не втыкайте в код преобразования без причны.- Взаимодействуйте с пользователем, пишите ему, что надо делать. В противном случае можете сами же запутаться, забыв, на каком этапе сейчас выполнение кода.
- Разбивайте код на методы. Вам ведь нужно вывести элементы, затем удалить из списка элемент и затем посмотреть изменения, так? Чтобы не писать один и тот же код дважды, создайте метод.
static void Main(string[] args)
{
Console.Write("Сколько всего элементов: ");
int count = int.Parse(Console.ReadLine());
List<Person> persons = new List<Person>();
for (int i = 0; i < count; i++)
{
Console.Write($"Введите элемент [{i}]: ");
string input = Console.ReadLine();
string[] tokens = input.Split();
persons.Add(new Person(tokens[0], int.Parse(tokens[1])));
}
Console.WriteLine();
PrintPersons(persons);
Console.Write($"Индекс элемента для удаления (от 0 до {persons.Count - 1}): ");
int n = int.Parse(Console.ReadLine());
persons.RemoveAt(n);
Console.WriteLine();
PrintPersons(persons);
}
private static void PrintPersons(List<Person> persons)
{
Console.WriteLine($"Всего элементов: {persons.Count}");
for (int i = 0; i < persons.Count; i++)
{
Console.WriteLine($"{persons[i].name} {persons[i].age}");
}
Console.WriteLine();
}
Так код легче читается?
Вывод в консоль
Сколько всего элементов: 3
Введите элемент [0]: Вася 10
Введите элемент [1]: Федя 12
Введите элемент [2]: Настя 28
Всего элементов: 3
Вася 10
Федя 12
Настя 28
Индекс элемента для удаления (от 0 до 2): 1
Всего элементов: 2
Вася 10
Настя 28