Приветствую все! Сегодня рассмотрим как пользоваться списками и применение их в программах.
В некоторых программа требуется использовать массивы, но иногда эти массивы необходимо динамически увеличивать. С простыми массивами это сделать не возможно. Однако на замену массивам приходят списки List. Которые позволяют увеличивать их не зная первоначально размер массива.
Создаем List с принимающим списком типа int, и с помощью метода Add добавляем по индексу 0 значение 0.
1 2 3 |
List<int> list = new List<int>(); list.Add(0) |
Методы используемые в List так же присутствуют и в массивах их рассматривать не будем, однако рассмотрим те которые вы часто будите использовать.
Add(T); Добавляет объект в конец списка List.
1 |
list.Add(0) |
Clear(); Удаляет все элементы из списка List;
1 |
list.Clear(); |
Insert(Int32,T); Вставляет элемент в коллекцию по указанному индексу в списке List;
1 |
list.Insert(0,1); |
Remove(T); Осуществляет поиск элемента в коллекции и удаляет его при первом вхождении.
1 |
list.Remove(2); |
RemoveAt(Int32); Удаляет элемент в коллекции по индексу.
1 |
list.RemoveAt(1); |
Рассмотрим пример того как можно вывести содержимое списка List
1 2 3 4 5 6 7 8 9 10 11 12 |
//с помощью 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, а также обращаться к коллекции по индексу.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
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(); } } |