Масиви в visual basic

Загальний розмір масиву в змінній prices становить (3 + 1) x (4 + 1) x (5 + 1) = 120.

Розмір масиву можна визначити за допомогою властивості Length. Довжину кожного вимірювання багатовимірного масиву можна отримати за допомогою методу GetLength.

Можна змінювати розмір змінної масиву, привласнюючи їй новий об'єкт масиву, або за допомогою оператора ReDim.

Існує ряд особливостей, про які слід пам'ятати при роботі з розміром масиву.

Індекс кожного вимірювання починається з 0, що означає, що його діапазон від 0 до верхньої межі. Таким чином, довжина даного вимірювання на 1 більше оголошеної верхньої межі цього виміру.

Довжина кожного вимірювання масиву обмежена максимальним значенням типу Integer. що дорівнює (2 ^ 31) - 1. Проте, загальний розмір масиву також обмежений доступною пам'яттю в системі. При спробі ініціалізувати масив, розмір якого перевищує обсяг доступної оперативної пам'яті, загальномовне Виконавча створює виняток OutOfMemoryException.

Розмір і розмір елемента

Розмір масиву не залежить від типу його елементів. Розмір завжди представляє загальне число елементів, а не число байтів, займане масивом при зберіганні.

Небезпечно робити будь-які припущення щодо способу зберігання масиву в пам'яті. Зберігання залежить від розмірності даних платформи, так один і той же масив може споживати більше пам'яті на 64-розрядних системах, ніж на 32-розрядних. Залежно від конфігурації системи при ініціалізації масиву загальномовне Виконавча (CLR) може вказувати такі способи зберігання, як упаковка елементів максимально близько один до одного або вирівнювання всіх елементів з природничих апаратним кордонів пам'яті. Крім того масив потребує зберіганні службової інформації, і розмір цієї інформації зростає при кожному додаванні вимірювання.

типи даних

Кожен масив має тип даних, але цей тип відрізняється від типу даних його елементів. Не існує єдиного типу даних, що підходить для всіх масивів. Замість цього тип даних масиву визначається числом вимірів масиву, або рангом. і типом даних елементів масиву. Дві змінні масивів мають один тип, тільки якщо масиви одного рангу і містять дані одного і того ж типу. Довжини вимірювань масиву не впливають на тип даних масиву.

Кожен масив успадковується від класу System. Array. і можна оголосити змінну типу Array. але не можна створити масив типу Array. Крім того, Оператор ReDim (Visual Basic) не може працювати зі змінною, оголошеної як тип Array. З цієї причини і для суворої типізації рекомендується оголосити кожен масив як конкретний тип, наприклад Integer. як в попередньому прикладі.

Можна з'ясувати тип даних масиву або його елементів декількома способами.

Можна викликати метод Object. GetType для змінної для отримання об'єкта Type типу змінної часу виконання. Об'єкт Type містить докладні відомості в своїх властивостях і методах.

Можна передати змінну функції TypeName. щоб отримати об'єкт String. що містить ім'я типу часу виконання.

Можна передати змінну функції VarType для отримання значення VariantType. представляє класифікацію типу змінної.

У наступному прикладі викликається функція TypeName для визначення типу масиву і типу елементів в масиві. Масив має тип Integer (,). а елементи масиву відносяться до типу Integer.

Хоча колекції найчастіше застосовуються для роботи з Тип даних Object. їх можна використовувати для роботи з даними будь-якого типу. У деяких випадках зберігання даних в колекції може виявитися більш ефективним, ніж в масиві.

Якщо потрібно змінити розмір масиву, необхідно використовувати Оператор ReDim (Visual Basic). Після цього Visual Basic створює новий масив і звільняє попередній масив. Це займає час виконання. Таким чином, якщо число елементів при роботі змінюється часто або не можна передбачити максимальне число необхідних елементів, можна отримати велику продуктивність при використанні колекції.

Колекція, яку не доводиться створювати новий об'єкт або копіювати існуючі елементи, може обробляти зміни розміру за менше час, ніж масив, який повинен використовувати ReDim. Але якщо розмір не змінюється або змінюється досить рідко, то масив, мабуть, більш ефективний. Як завжди, продуктивність більшою мірою залежить від конкретного додатка. Часто варто витратити час на те, щоб випробувати як масив, так і колекцію.

спеціалізовані колекції

NET Framework також надає набір класів, інтерфейсів і структур для загальних і спеціальних колекцій. Простору імен System.Collections і System.Collections.Specialized містять визначення і реалізації, які включають словники, списки, черги і стеки. Простір імен System.Collections.Generic надає багато з цих універсальних версій, які приймають один або кілька аргументів.

Якщо в колекції зберігаються елементи лише одного певного типу даних, то універсальна колекція має перевагу примусового типу безпеки. Додаткові відомості про універсальні елементах см. В розділі Універсальні типи в Visual Basic (Visual Basic).

спеціалізовані колекції

NET Framework також надає набір класів, інтерфейсів і структур для загальних і спеціальних колекцій. Простору імен System.Collections і System.Collections.Specialized містять визначення і реалізації, які включають словники, списки, черги і стеки. Простір імен System.Collections.Generic надає багато з цих універсальних версій, які приймають один або кілька аргументів.

Якщо в колекції зберігаються елементи лише одного певного типу даних, то універсальна колекція має перевагу примусового типу безпеки. Додаткові відомості про універсальні елементах см. В розділі Універсальні типи в Visual Basic (Visual Basic).

У наступному прикладі використовується універсальний клас .NET Framework System.Collections.Generic. List для створення колекції-списку об'єктів Customer.

Схожі статті