Интернет-журнал "Домашняя лаборатория", 2007 №9
Шрифт:
Console.WriteLine("Отсортированный массив col1: ");
Arrs.PrintCollection("col1",col1);
first = Array.BinarySearch(col1, 2);
Console.WriteLine("Индекс вхождения 2 в col1: {0}",first);
//Создание экземпляра (массива)
Array my2Dar = Array.Createlnstance(typeof(double), 2,3);
Arrs.PrintCollection("my2Dar",my2Dar);
//клонирование
my2Dar = (Array)col4.Clone;
Console.WriteLine("Массив my2Dar после клонирования col4: ");
Arrs.PrintCollection("my2Dar",my2Dar);
//копирование CopyTo col1.CopyTo (соl2, 0);
Console.WriteLine("Массив col2
Arrs.PrintCollection("col2",col2);
}
В этой процедуре продемонстрированы вызовы различных статических методов класса Array. Для метода Сору показан вызов двух реализаций этого метода, когда копируется весь массив и часть массива. Закомментированный оператор вызова метода IndexOf напоминает о невозможности использования методов поиска при работе с многомерными массивами. Приведу результаты вывода, порожденные этим кодом.
Рис. 12.3. Результаты применения статических методов класса Array
Таблица 12.1. Свойства класса Array
Свойство • Родитель • Описание
IsFixedSize • Интерфейс IList • True, если массив статический
IsReadOnly • Интерфейс IList • Для всех массивов имеет значение false
IsSynchronized • Интерфейс ICollection • True или False, в зависимости оттого, установлена ли синхронизация доступа для массива
SyncRoot • Интерфейс ICollection •
Собственный метод синхронизации доступа к массиву. При работе с массивом его можно закрыть на время обработки, что запрещает его модификацию каким-либо потоком:
Array myCol = new int [];
lock(myCol.SyncRoot) {
foreach (Object item in myCol)
{
// безопасная обработка массива }
Length • Число элементов массива •
Rank • Размерность массива
Таблица 12.2. Статические методы класса Array
Метод • Описание
BinarySearch • Двоичный поиск. Описание и примеры даны в тексте
Clear • Выполняет начальную инициализацию элементов. В зависимости от типа элементов устанавливает значение о для арифметического типа, false — для логического типа, Null для ссылок, "" — для строк.
Copy • Копирование части
Create Instance • Класс Array, в отличие от многих классов, может создавать свои экземпляры не только с помощью конструктора new, но и при вызове метода CreateInstance:
Array my2Dar = Array.CreateInstance(typeof(double), 2,2)
IndexOf • Индекс первого вхождения образца в массив. Описание и примеры даны в тексте
LastlndexOf • Индекс последнего вхождения образца в массив. Описание и примеры даны в тексте
Reverse • Обращение одномерного массива. Описание и примеры даны в тексте
Sort • Сортировка массива. Описание и примеры даны в тексте
Сводка свойств и методов класса Array
Многие возможности, которыми можно пользоваться при работе с массивами, уже обсуждены. В завершение этой темы в таблицах 12.1-12.3 приведем сводку всех свойств и методов класса Array.
Таблица 12.3. Динамические методы класса Array
Метод • Родитель • Описание •
Equals • Класс Object • Описание и примеры даны в предыдущих главах.
GetHashCode • Класс Object • Описание и примеры даны в предыдущих главах.
GetType • Класс Object • Описание и примеры даны в предыдущих главах.
ToString • Класс Object • Описание и примеры даны в предыдущих главах.
Clone • Интерфейс ICIoneable • Позволяет создать плоскую или глубокую копию массива. В первом случае создаются только элементы первого уровня, а ссылки указывают на те же самые объекты. Во втором случае копируются объекты на всех уровнях. Для массивов создается только плоская копия.
CopyTo • Интерфейс ICollection • Копируются все элементы одномерного массива в другой одномерный массив, начиная с заданного индекса:
col1.CopyTo(со12,0);
GetEnumerator • Интерфейс IEnumerable • Стоит за спиной цикла ForEach
GetLength • _ • Возвращает число элементов массива по указанному измерению. Описание и примеры даны в тексте главы.