Динамические массивы
Размер обычного массива фиксируется при его создании и в процес- се выполнения программы напрямую его изменить невозможно. На прак- тике встречаются задачи, когда количество элементов в массиве должно меняться в процессе выполнения программы.
Альтернативой массиву в этом случае является динамический мас- сив. Динамический массив определен как класс ArrayList в пространст- ве имен System.Collections.
Принципиальное отличие от обычного массива: размер динамиче- ского массива автоматически изменяется при добавлении и удалении элементов, которые выполняются специальными методами.
Поле объекта: Count – количество элементов в массиве Методы объекта для добавления элементов в массив: Add (значение) // добавление элемента в конец массива
AddRange (массив) // добавление массива в конец массива
Insert (номер позиции, значение) //добавление элемента в задан- ную позицию
InsertRange (номер позиции, массив) // добавление массива с за- данной позиции
Методы объекта для удаления элементов из массива:
Remove (значение) RemoveAt (номер позиции)
RemoveRange (номер позиции, количествово элементов) Clear () // удаление всех элементов
Пример:
ArrayList_a; int[] b,c;
b=new int[]{10, 20}; c=new int[100];
a=new ArrayList(); a Count
пусто 0
a.Add(5); 5 1
a.Insert(0,77); // в позицию
0 значение 77 2
a.AddRange(b); 4
a.CopyTo(1,c,0,3); 4
a.InsertRange(0,b); 6
a.Remove(20); 5
a.RemoveAt(3); 4
a.RemoveRange(1,2); 2
a.Clear(); пусто 0
Если действие выполнить невозможно, действие не выполняется. Если выполняемое действие приводит к выходу за границы массива, фик- сируется исключительная ситуация.
Выбор, каким массивом пользоваться, зависит от ситуации. Обычный массив структурно проще, доступ к элементу быстрее, методов больше.
У динамического массива можно без проблем удалять/добавлять элементы, легко изменять размер.
На практике используется сочетание динамического и обычного мас- сивов. Это порождает проблему создания динамического массива на основе обычного и наоборот.
динамический массив(a) → обычный массив(b)
a.CopyTo (позиция в дин.мас-ве ,обычный массив, позиция в об.мас-ве, кол-во элементов)
обычный массив(b) → динамический массив(a)
a.AddRange (b) //добавление обычного массива в пустой динамический
Материалы на данной страницы взяты из открытых источников либо размещены пользователем в соответствии с договором-офертой сайта. Вы можете сообщить о нарушении.