Методы списков С#
Необходимо из списка удалить все элементы с непарными индексами. Мое решение (весьма колхозное) выглядит так:
class Program
{
static void Main(string[] args)
{
List<int> lists = new List<int>()
{
0,1,2,3,4,5,6,7,8,9,10
};
for (int i = 0; i < lists.Count; i++)
{
if (i % 2 != 0)
{
lists.Remove(lists[i]);
lists.Insert(i, 0);
}
}
for (int i = 0; i < lists.Count; i++)
{
if (lists[i] == 0)
{
lists.RemoveAt(i);
}
}
Console.WriteLine();
Console.WriteLine();
for (int i = 0; i < lists.Count; i++)
{
Console.WriteLine(lists[i]);
}
}
Список создан учебный, потом будет ввод. Цифры в порядке возрастания сделаны для удобства.
Вопрос: как оптимизировать код и сделать его более удобным для чтения? (Метод для отбора элементов в с#, в Java - RemoveIf(нужен аналог)).
Ответы (1 шт):
Автор решения: Aziz Umarov
→ Ссылка
Вот так посмотрите
static void Main(string[] args)
{
List<int> lists = new List<int>()
{
0,1,2,3,4,5,6,7,8,9,10
};
for (int i = lists.Count - 1 ; i > 0; i--)
{
if (i % 2 != 0)
{
lists.Remove(lists[i]);
//lists.RemoveAt(i); по вашему усмотрению
}
}
Console.WriteLine();
for (int i = 0; i < lists.Count; i++)
{
Console.WriteLine(lists[i]);
}
}
А по хорошему не заморачивайтесь с циклами и изучайте Linq
static void Main(string[] args)
{
List<int> lists = new List<int>()
{
0,1,2,3,4,5,6,7,8,9,10
};
lists.Where((number, index) => index % 2 == 0).ToList().ForEach(i => Console.WriteLine(i));
}