Коллекция (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"}; }
И посмотрим результат работы.
С коллекциями мы уже сталкивались в ходе работы. Например при вставке элемента управления "Шаг 25 - Встраиваем элемент управления в окно". Доступа к базе данных "Шаг 13 - Попробуем OLEDB". А вот сейчас мы посмотрели как нам самим создать коллекцию.