Папиллярные узоры пальцев рук - маркер спортивных способностей: дерматоглифические признаки формируются на 3-5 месяце беременности, не изменяются в течение жизни...
Своеобразие русской архитектуры: Основной материал – дерево – быстрота постройки, но недолговечность и необходимость деления...
Топ:
Особенности труда и отдыха в условиях низких температур: К работам при низких температурах на открытом воздухе и в не отапливаемых помещениях допускаются лица не моложе 18 лет, прошедшие...
Техника безопасности при работе на пароконвектомате: К обслуживанию пароконвектомата допускаются лица, прошедшие технический минимум по эксплуатации оборудования...
Эволюция кровеносной системы позвоночных животных: Биологическая эволюция – необратимый процесс исторического развития живой природы...
Интересное:
Как мы говорим и как мы слушаем: общение можно сравнить с огромным зонтиком, под которым скрыто все...
Аура как энергетическое поле: многослойную ауру человека можно представить себе подобным...
Что нужно делать при лейкемии: Прежде всего, необходимо выяснить, не страдаете ли вы каким-либо душевным недугом...
Дисциплины:
|
из
5.00
|
Заказать работу |
|
|
|
|
***Класс ArrayList
Основным недостатком обычных массивов является то, что объем памяти, необходимый для хранения их элементов, должен быть выделен до начала работы с массивом. Класс ArrayList позволяет программисту не заботиться о выделении памяти и хранить в одном и том же массиве элементы различных типов.
По умолчанию при создании объекта типа ArrayList строится массив из 16 элементов типа object. Можно задать желаемое количество элементов в массиве, передав его вконструктор или установив в качестве значения свойства Capacity, например:
ArrayListarr1 = newArrayList(); // создается массив из 16 элементов
ArrayListarr2 = newArrayList(1000); // создается массив из 1000 элементов
ArrayList аггЗ = newArrayList();
аггЗ.Capacity = 1000; // количество элементов задается
Класс ArrayList имеет множество полезных для разработчика методов и свойств, например:
· Capacity – свойство, связано с емкостью массива (количество элементов, которые могут храниться в массиве);
· Count – свойство, фактическое количество элементов массива;
· Item – свойство, получает или устанавливает значение элемента по заданному индексу;
· Add – метод, добавление элемента в конец массива;
· Clear – метод, удаление всех элементов из массива;
· IndexOf- метод, поиск первого вхождения элемента в массив (возвращает индекс найденного элемента или -1, если элемент не найден).
· Insert – метод, вставка элемента в заданную позицию (по заданному индексу);
· Reverse – метод, изменение порядка следования элементов на обратный;
· RemoveAt – метод, удаление элемента из массива по заданному индексу;
· Sort – метод, упорядочивание элементов массива или его части.
Класс ArrayList реализован через класс Array, то есть содержит закрытое поле этого класса. Поскольку все типы в С# являются потомками класса object, массивможет содержать элементы произвольного типа/Даже если в массиве хранятсяобычные целые числа, то есть элементы значимого типа, внутренний классявляется массивом ссылок на экземпляры типа, object, которые представляютсобой упакованный тип-значение. Соответственно, при занесении в массив выполняетсяупаковка, а при извлечении — распаковка элемента. Это не может не сказаться на быстродействии алгоритмов, использующих ArrayList.
Если при добавлении элемента в массив оказывается, что фактическое количество элементов массива превышает его емкость, она автоматически удваивается, тоесть происходит повторное выделение памяти и переписывание туда всех существующихэлементов.
Пример занесения элементов в экземпляр класса ArrayList:
arr1.Add(123);
arr1.Add(-2);
arr1.Add("Вася");
Доступ к элементу выполняется по индексу, однако при этом необходимо явным образом привести полученную ссылку к целевому типу, например:
int a = (int) arrl[0];
int b = (int) arrl[l];
string s - (string) arrl[2]:
Попытка приведения к типу, не соответствующему хранимому в элементе, вызываетгенерацию исключения InvalidCastException.;
Для повышения надежности программ применяется следующий прием: экземпляр класса ArrayList объявляется закрытымполем класса, в котором необходимо хранить коллекцию значений определенного типа, а затем описываются методы работы с этой коллекцией, делегирующие свои функции методам ArrayList.
Недостатком этого решения является то, что для каждого метода стандартной коллекции приходится описывать метод-оболочку, вызывающий стандартный метод. Хотя это и несложно, но несколько неизящно. ВС#, начиная с версии 2.0, появились классы-прототипы (generics), позволяющие решить эту проблему.
***Класс List
Многие алгоритмы не зависят от типов данных, с которыми они работают. Простейшими примерами могут служить сортировка и поиск. Возможность отделить алгоритмы от типов данных предоставляет классы-прототипы (generics) — классы, имеющие в качестве параметров типы данных. Чаще всего эти классы применяются для хранения данных, то есть в качестве контейнерных классов, или коллекций.
Эти коллекции, расположенные в пространстве имен System.Collections.Generic, дублируют аналогичные коллекции пространства имен System.Collections.
List<T>является классом прототипом класса ArrayList.В отличии от своего предка List<T>хранит элементы одного типа или класса и производных от него классов, это делает его универсальным.
Казалось бы, по сравнению с обычными коллекциями это ограничение, а не универсальность, однако на практике коллекции, в которых действительно требуется хранить значения различных, не связанных межу собой типов, почти не используются.Достоинством же такого ограничения является то, что компилятор может выполнить контроль типов во время компиляции, а не выполнения программы,что повышает ее надежность и упрощает поиск ошибок.
В остальном он подобен своему предку.
----Отличием же от класса Array, является более широкий набор методов и свойств, однако все равно есть и недостатки, а именно невозможность задать нижнюю границу массива, возможность создать только одномерный массив с помощью классов Listи ArrayList.
Последняя проблема решается посредством создания массивов-списков. Это можно сделать следующим образом, с использованием класса Array:
List<int>[] lst = new List<int>[9];
Тут мы объявляем массив типа List<int>из 9 элементов и далее в цикле инициализируем каждый элемент массива списком:
for (int i = 0; i < 9; i++)
{
lst[i] = new List<int>() {};
}
Далее обращаться к такому массиву списку мы можем средством цикла foreach, например:
foreach (List<int> sp in lst)
{
foreach (int i in sp) Console.Write(i + " ");
Console.WriteLine();
}
Можно добавить пример самостоятельно
|
|
|
Адаптации растений и животных к жизни в горах: Большое значение для жизни организмов в горах имеют степень расчленения, крутизна и экспозиционные различия склонов...
Наброски и зарисовки растений, плодов, цветов: Освоить конструктивное построение структуры дерева через зарисовки отдельных деревьев, группы деревьев...
История развития хранилищ для нефти: Первые склады нефти появились в XVII веке. Они представляли собой землянные ямы-амбара глубиной 4…5 м...
Папиллярные узоры пальцев рук - маркер спортивных способностей: дерматоглифические признаки формируются на 3-5 месяце беременности, не изменяются в течение жизни...
© cyberpediasu.com 2017-2026 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!