Шаг 32 - Коллекции

Коллекция (Collection) - это набор классов, с которыми можно работать точно так же как и с массивом. Вот пример, правда пока не работающий, он даже не скомпилируется пока, но вот как это должно все происходить.

using System;

class MainClass
{
	public static void Main(string[] args)
	{
		ArrayString ar = new ArrayString();
		foreach (string s in ArrayString)
		{
			Console.WriteLine(s); 
		}
	}
}

class ArrayString
{
}

При компиляции мы получим ошибку. Правильно получим. Для работы с Foreach нам нужен метод GetEnumerator. Кроме того, класс коллекции должен наследовать IEnumerator так как этот интерфейс снабдит класс необходимыми методами и свойствами навигации и получения данных такими как

Current
Reset
MoveNext

Ну что напишем рабочий код?

using System;
using System.Collections;

class MainClass
{
	public static void Main(string[] args)
	{
		ArrayString ar = new ArrayString();
		foreach (string s in ar)
		{
			Console.WriteLine(s); 
		}
	}
}

class ArrayString : IEnumerator
{
public IEnumerator GetEnumerator()
{
 return  new ArrayString();
}
public bool MoveNext()
{
	i++;
	if (i==3) return false;
	else return true;
}
public void Reset()
{
i=-1;
}
public object Current
{
get
{
return arstring[i];
}
}
private int i=-1;
private string[] arstring = new string[3] {"hello","collection","class"};
}

И посмотрим результат работы.

gif/32_1.gif (2751 b)

С коллекциями мы уже сталкивались в ходе работы. Например при вставке элемента управления "Шаг 25 - Встраиваем элемент управления в окно". Доступа к базе данных "Шаг 13 - Попробуем OLEDB". А вот сейчас мы посмотрели как нам самим создать коллекцию.


Загрузить проект | Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем - 01.10.2001