В статье «Массивы» описаны основные действия программиста при работе с массивами, отмечено, что они реализуются в C# в виде объектов. Помня о том, что ключевое слово ООП — класс, мы обнаружим в библиотеке System статический класс Array. Этот класс определяет ряд свойств и методов, которые мы можем использовать при работе с массивами.
Основные свойства (2) и методы (10 из 28):
1) свойство Length возвращает общее число элементов массива во всех измерениях;
2) свойство Rank возвращает размерность массива (1 — одномерный, 2 — двухмерный и т.д.);
3) статический метод Clear() очищает массив, устанавливая для всех его элементов (или его части) значение по умолчанию;
4) статический метод Copy() копирует часть одного массива в другой массив;
5) статический метод Exists() проверяет, содержит ли массив определенный элемент;
6) статический метод Find() находит элемент, который удовлетворяет определенному условию;
7) статический метод FindAll() находит все элементы, которые удовлетворяет определенному условию;
8) статический метод IndexOf() возвращает индекс элемента;
9) статический метод Resize() изменяет размер одномерного массива;
10) статический метод Reverse() располагает элементы массива в обратном порядке;
11) статический метод Sort() сортирует элементы одномерного массива;
12) статический метод BinarySearch() выполняет бинарный поиск в отсортированном массиве.
Ниже приводится пример использования свойств и методов класса Array:
// Свойства и методы класса System.Array using System; namespace Array_System { class Program { static void Main() { int [] ar = new int[6]; // объявим массив for (int i = 0; i < 6; i++) ar[i] = i * 2 + 1; // инициализация print(ar, "ar"); // вывод на печать Console.WriteLine("Размерность - {0}", ar.Rank); Console.WriteLine("Длина - {0}", ar.Length); Array.Clear(ar, 3, 2); // очистка, частично print(ar, "ar"); ar[4] = 15; // заполним 0 ar[3] = 19; print(ar, "ar"); int[] ap = new int[5]; // для копии массива // Копирование с 1-го в нулевой, всего 5 Array.Copy(ar, 1, ap, 0, 5); print(ap, "ap"); Console.WriteLine("Размерность - {0}", ap.Rank); Console.WriteLine("Длина - {0}", ap.Length); // Если элемент 15 существует, то true, иначе false Console.WriteLine(Array.Exists(ap, element => element == 15)); // Найти первый элемент, удовлетворяющий условию Console.WriteLine(Array.Find<int>(ap,element => (element < 16) & (element > 10))); // Создать массив элементов, удовлетворяющих условию int [] av = new int[0]; // IsInterNumbers - предикат, см.ниже av = Array.FindAll<int>(ap, IsInterNumbers); print(av, "av"); Console.WriteLine("Длина - {0}", av.Length); // Индекс заданного элемента, если его нет, то -1 Console.WriteLine(Array.IndexOf(ar, 19)); int[] aq = new int[2]; // исходный print(aq, "aq"); Array.Resize<int>(ref aq, 8); // результат aq[6] = 444; // изменим элемент print(aq, "aq"); Array.Reverse(ap); // реверс массива print(ap, "ap"); Array.Sort(ap); // сортировка print(ap, "ap"); // бинарный поиск, возвращает индекс или число < 0 Console.WriteLine(Array.BinarySearch<int>(ap, 11)); Console.ReadLine(); } // предикат для Array.FindAll<int>(ap, IsInterNumbers) private static bool IsInterNumbers(int numbers) { if ((numbers < 16) && (numbers > 4)) return true; else return false; } // вывод массива в строку с наименованием static void print(int[] ar, string nameArr) { Console.Write(nameArr + ": "); foreach (object a in ar) Console.Write("{0}\t", a); Console.WriteLine(); } } }
Результат:
Вывод: Использование статических методов класса Array позволяет существенно сократить программный код, как и для работы со строками.
NEW: Наш Чат, в котором вы можете обсудить любые вопросы, идеи, поделиться опытом или связаться с администраторами.
![]() |
![]() |
![]() |
![]() |
мне не понравилось :(
а мне понравилось :)