Приветствую все! Сегодня рассмотрим как пользоваться списками и применение их в программах.
В некоторых программа требуется использовать массивы, но иногда эти массивы необходимо динамически увеличивать. С простыми массивами это сделать не возможно. Однако на замену массивам приходят списки List. Которые позволяют увеличивать их не зная первоначально размер массива.
Создаем List с принимающим списком типа int, и с помощью метода Add добавляем по индексу 0 значение 0.
List<int> list = new List<int>(); list.Add(0)
Методы используемые в List так же присутствуют и в массивах их рассматривать не будем, однако рассмотрим те которые вы часто будите использовать.
Add(T); Добавляет объект в конец списка List.
list.Add(0)
Clear(); Удаляет все элементы из списка List;
list.Clear();
Insert(Int32,T); Вставляет элемент в коллекцию по указанному индексу в списке List;
list.Insert(0,1);
Remove(T); Осуществляет поиск элемента в коллекции и удаляет его при первом вхождении.
list.Remove(2);
RemoveAt(Int32); Удаляет элемент в коллекции по индексу.
list.RemoveAt(1);
Рассмотрим пример того как можно вывести содержимое списка List
//с помощью foreach
foreach (int i in list)
{
Console.WriteLine(i);
}
//c помощью for
for (int i=0; i < list.Count; i++)
{
Console.WriteLine(list[i]);
}
Как вывести список list по индексу как обычного массива?
Приведенный пример ниже позволит создать свои класс List, а также обращаться к коллекции по индексу.
public partial class MyList<T> : IEnumerable<T>
{
public T[] collection;
int count = 0;
public MyList()
{
collection = new T[100];
}
void Enlarge()
{
throw new NotImplementedException();
}
public void Add(T value)
{
if (count == collection.Length)
Enlarge();
collection[count++] = value;
}
public IEnumerator<T> GetEnumerator()
{
for (int i = 0; i < count; i++)
yield return collection[i];
}
System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
{
return GetEnumerator();
}
public T this[int index]
{
get
{
if (index < 0 || index >= count) throw new IndexOutOfRangeException();
return collection[index];
}
set
{
if (index < 0 || index >= count) throw new IndexOutOfRangeException();
collection[index] = value;
}
}
}
public class Program
{
public static void Main()
{
var list = new MyList<int>();
list.Add(1);
list.Add(2);
list.Add(3);
Console.WriteLine(list [1]);
// вывод 2
Console.ReadKey();
}
}
