Коллекции — это своего рода "продвинутые" массивы, при работе с которыми тебе не приходится заботиться о размере массива, т. е. он регулируется автоматически. Коллекции в .NET 1.x бываютс следующих типов:
ArrayList
HashTable
Queue
Stack
SortedList
ArrayList — это индексируемая коллекция, т. е к её элементам ты обращаешься по индексам. Если хочешь добавить новый элемент, то просто вызываешь метод Add:
ArrayList ar = new ArrayList();
ar.Add(...);
Аналогичным образом можно удалять элементы: для этого есть соответсвующие методы...
HashTable позволяет обращаться к элементам по ключу (текстовому) + в хеш-таблице все элементы упорядочиваются по спец. хеш алгоритму, а не идут последовательно один за одним.
Queue работает по принципу FIFO (First In First Out), кажется так это называется, т.е. обычная очередь: как встал, так и пошёл...
Stack — это стек, т.е. FILO (First In Last Out), а SortedList — это список, поддерживающий сортировку.
Особенность всех коллекций заключается в том, что они заполняются элементами типа object, т. е. можно туда пихать всё подряд:
class Person
{
Person() { }
int a;
int b;
}
<Main code>:
Person p1 = new Person();
Person p2 = new Person();
ArrayList persons = new ArrayList();
persons.Add(p1);
persons.Add(p2);
// А дальше уже можно доизврощаться до умопомрачения
persons.Add(12345);
persons.Add("some text");
// Т. е. в одну коллекцию я могу накидать данные совершенно разных типов ==> you'll get exceptions!!!!
Для решения этих проблем в .NET создали такую волшебную штуку, называется Generic Types — это что-то вроде шаблонов в C++. Таким образом, в <Main code> я могу persons обявить вот так:
List<Person> persons = new List<Person>();
и тогда я в этот список можно будет погрузить данные только типа Person
Note: List — это новый Generic тип коллекции в .NET 2
Интерфейс — это, грубо говоря, класс, содержащий только объявления членов (прототипы) и никакого кода в них, а вот реализующие его классы уже обязаны включать в себя члены реализуемого интерфейса. Пусть они остаютяс пустыми (в случае с функциями), но они должны быть. Например:
interface A
{
void Go();
int a;
}
class B : A
{
// Функция Go и поле a должны быть обязательно
void Go() { }
int a;
...
}
В общем, примерно так

Когда к тебе располагает всё... — Уильям Шекспир "Король Генрих IV"
...Не ошибись, указывая пальцем на Луну — Дзен-буддизм
данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение