Для детальнішого розуміння особливостей використання масивів в C# необхідно розглянути спеціалізований клас, що реалізовує функції масиву. Як вже згадувалося раніше, всі типи даних в C# є класами, для яких як базовий виступає клас Object. Клас Array - не виключення. Він реалізує всі базові властивості класів і є предком для всіх типів масивів, до яких ми звикли в мові C++ і синтаксис опису яких був приведений вище. Те, що клас Array є нащадком класу Object, здається на перший погляд малоцікавим фактом, проте насправді говорить про багато що. Зокрема, завдяки цьому в класі Array виявляється визначена безліч різноманітних операцій, таких як копіювання, пошук, звернення, сортування і так далі
Нижче приведені найцікавіші методи класу Array
BinarySearch() | Пошук елементів в одновимірному відсортованому масиві. |
Sort() | Сортування елементів одновимірного масиву. |
Clear() | Очищення елементів масиву в заданому діапазоні індексів. |
CopyTo() | Копіювання елементів початкового масиву в масив призначення. |
GetLength(), Length | Визначення кількості елементів у вказаному вимірюванні масиву. |
GetLowerBound() | Визначення нижньої межі масиву. |
GetUpperBound() | Визначення верхньої межі масиву. |
GetValue() | Повертає значення вказаного індексу для масиву. |
SetValue() | Встановлює значення вказаного індексу для масиву. |
Reverse() | Розставляє елементи одновимірного масиву в зворотному порядку. |
Rank | Визначення кількості вимірювань вказаного масиву. |
Розглянемо приклад використання класу Array. Для цього створимо масив і забезпечимо можливість пошуку в нім елементів.
|
|
Оголосимо масив myArray як статичний член класу Page, що складається з шести елементів типу int:
static Array myArray = Array.CreateInstance(typeof(Int32), 6);Розмістимо на формі елементи TextBox і Button, яким привласнимо імена tb_value і btn_find відповідно, як показано на рис. 3.3.
Мал. 3.3. Розміщення на формі елементів TextBox і Button
У обробник процедури натиснення на кнопку введемо наступний код, що заповнює масив випадковими числами, сортує його і здійснюючий пошук введеного в текстове поле елементу. Код процедури натиснення на кнопку приведений нижче.
protected void btn_find_Click(object sender, EventArgs e){ Random rnd = new Random(); Response.Write("Початковий масив <br/>"); for (int i = myArray.GetLowerBound(0); i <= myArray.GetUpperBound(0); i++) { myArray.SetValue(rnd.Next(1, 10), i); Response.Write(myArray.GetValue(i) + "\t"); } Response.Write("<br/>"); Array.Sort(myArray); Response.Write("Після сортування:<br/>"); for (int i = myArray.GetLowerBound(0); i <= myArray.GetUpperBound(0); i++) { Response.Write(myArray.GetValue(i) + "\t"); } object про = Convert.ToInt32(tb_value.Text); int findIndex = Array.BinarySearch(myArray, про); if (findIndex<0) { Response.Write("<br/>Элемент не знайдений"); } else { Response.Write("<br/>Элемент знайдений у позиції <b>"+findIndex. ToString()+"</b>"); }}Приклад роботи програми в результаті виконання приведеної вище коди представлений на рис. 3.4.
|
|
Мал. 3.4. Результат роботи програми заповнення, сортування і пошуку елементів масиву
Як видно, працювати з масивами в C# досить просто, особливо враховуючи досить великі можливості класу Array.