Теория
От: Аноним  
Дата: 21.06.05 18:10
Оценка: 31 (3)
Коллекции — это своего рода "продвинутые" массивы, при работе с которыми тебе не приходится заботиться о размере массива, т. е. он регулируется автоматически. Коллекции в .NET 1.x бываютс следующих типов:
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
ссылка на оригинальное сообщение
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.