Базовый класс System.Array
Базовый класс System.Array
Каждый создаваемый вами массив в .NET автоматически получается из System.Array. Этот класс определяет рад полезных методов для упрощения работы с массивами. В табл. 3.14 предлагаются описания некоторых из наиболее интересных членов указанного класса.
Таблица 3.14. Некоторые члены System.Array
Член Описание BinarySearch() Статический метод, выполняющий поиск заданного элемента в (предварительно отсортированном) массиве. Если массив скомпонован из пользовательских типов, искомый тип должен реализовывать интерфейс IComparer (см. главу 7), чтобы задействовать двоичный поиск Clear() Статический метод, очищающий заданный диапазон элементов в массиве (устанавливается 0 для числовых типов и null – для ссылочных типов) CopyTo() Метод, используемый для копирования элементов из массива-источника в целевой массив Length Свойство, доступное только для чтения и используемое для выяснения числа элементов в массиве Rank Свойство, возвращающее значение размерности данного массива Reverse() Статический метод, инвертирующий порядок следования элементов одномерного массива Sort() Метод, сортирующий одномерный массив внутренних типов. Если элементы в массиве реализуют интерфейс IComparer, можно также сортировать пользовательские типы (снова см. главу 7)Рассмотрим примеры использовании некоторых из этих членов. В следующем программном коде используются статические методы Reverse() и Clear() (а также свойство Length) для вывода некоторой информации о массиве строк firstNames на консоль.
// Создание строковых массивов и проверка
// некоторых членов System.Array.
static void Main(string[] args) {
// Массив строк.
string[] firstNames = {"Steve", "Dominic", "Swallow", "Baldy"};
// Печать имен в объявленном виде.
Console.WriteLine("Вот вам массив:");
for(int i = 0; i ‹ firstNames.Length; i++) Console.Write("Имя: {0} ", firstNames[i]);
Console.WriteLine(" ");
// Инвертирование порядка в массиве и печать.
Array.Reverse(firstNames);
Console.WriteLine("Вот вам инвертированный массив:");
for (int i = 0; i ‹ firstNames.Length; i++) Console.Write("Имя: (0} ", firstNames[i]);
Console.WriteLine(" ");
// Очистка всех данных, хроме Baldy.
Console.WriteLine("Очистка всех данных, кроме Baldy…");
Array.Clear(firstNames, 1, 3);
for (int i = 0; i ‹ firstNames.Length; i++) Console.Write ("Имя: {0} ", firstNames[i]);
Console.ReadLine();
}
Обратите особое внимание на то, что при вызове метода Clear() для массива оставшиеся элементы массива не сжимаются в меньший массив. Для подвергшихся очистке элементов просто устанавливаются значения по умолчанию. Если вам нужен контейнер динамического типа, поищите подходящий тип в пространстве имен System.Collections.
Исходный код. Проект Arrays размещен в подкаталоге, соответствующем главе 3.