Приветствую все! Сегодня рассмотрим как пользоваться списками и применение их в программах.
В некоторых программа требуется использовать массивы, но иногда эти массивы необходимо динамически увеличивать. С простыми массивами это сделать не возможно. Однако на замену массивам приходят списки 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(); } }