Кожен створюваний масив отримує більшу частину функціональності від класу System.Array. Загальні члени цього класу дозволяють працювати з масивом з використанням повноцінної об'єктної моделі. Таким чином, методи і властивості, певні в класі Array, можна використовувати з будь-яким масивом C #. Давайте розберемо деякі корисні особливості класу Array.
створення масивів
Клас Array є абстрактним, тому створити масив з використанням будь-якого конструктора можна. Однак замість застосування синтаксису C # для створення екземплярів масивів також можливо створювати їх за допомогою статичного методу CreateInstance (). Це виключно зручно, коли заздалегідь невідомий тип елементів масиву, оскільки тип можна передати методу CreateInstance () в параметрі як об'єкт Type:
Зверніть увагу, що для установки значень в масив служить метод SetValue (). а для їх читання - метод GetValue ().
Оскільки масиви - це посилальні типи, присвоювання змінної типу масиву іншої змінної створює дві змінних, що посилаються на один і той же масив. Для копіювання масивів передбачена реалізація масивами інтерфейсу ICloneable. Метод Clone (). визначений у цьому інтерфейсі, створює неглибоку копію масиву. Якщо елементи масиву відносяться до типу значень, то всі вони копіюються, якщо масив містить елементи довідкових типів, то самі ці елементи не копіюються, а копіюються лише посилання на них.
Замість методу Clone () можна також застосовувати метод Array.Сору (). теж створює поверхневу копію. Але між Clone () і Сору () є одна важлива відмінність: Clone () створює новий масив, а Сору () вимагає наявності існуючого масиву тієї ж розмірності з достатньою кількістю елементів.
Сортування і пошук
У класі Array реалізований алгоритм швидкого сортування (Quicksort) елементів масиву. Метод Sort () вимагає від елементів реалізації інтерфейсу IComparable. Прості типи, такі як System.String і System.Int32, реалізують IComparable, так що можна сортувати елементи, пов'язані з цим типам.
C допомогою різних варіантів методу Sort () можна впорядкувати масив повністю або в заданих межах або впорядкувати два масиви, що містять відповідні пари "ключ-значення". Після сортування в масиві можна здійснити ефективний пошук, використовуючи різні варіанти методу BinarySearch ().