Работа со списками List C#

Приветствую все! Сегодня рассмотрим как пользоваться списками и применение их в программах.

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

 

Обновлено: 14.01.2018 — 21:29

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.