Массивы. Класс System.Array

В статье «Массивы» описаны основные действия программиста при работе с массивами, отмечено, что они реализуются в 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: Наш Чат, в котором вы можете обсудить любые вопросы, идеи, поделиться опытом или связаться с администраторами.


Понравилась статья? Поделиться с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
2 комментариев
Новые
Старые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

мне не понравилось :(

а мне понравилось :)

2
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x
()
x