Dimensiunea totală a matricei în prețurile de preț este (3 + 1) x (4 + 1) x (5 + 1) = 120.
Dimensiunea matricei poate fi determinată utilizând proprietatea Lungime. Lungimea fiecărei dimensiuni a unei matrice multidimensionale poate fi obținută utilizând metoda GetLength.
Puteți schimba dimensiunea unei variabile de array atribuindu-i un nou obiect de matrice sau folosind operatorul ReDim.
Există o serie de caracteristici pe care trebuie să le țineți cont atunci când lucrați cu dimensiunea unui matrice.
Indicele fiecărei măsurări începe la 0, ceea ce înseamnă că intervalul său este de la 0 la limita superioară. Astfel, lungimea acestei măsurători este mai mare decât limita superioară declarată a acestei măsurători.
Lungimea fiecărei dimensiuni a matricei este limitată la valoarea maximă a tipului Integer. care este (2 ^ 31) - 1. Cu toate acestea, dimensiunea totală a matricei este de asemenea limitată de memoria disponibilă din sistem. Dacă încercați să inițializați un matrice care este mai mare decât cantitatea de RAM disponibilă, runtime-ul comun al limbajului generează OutOfMemoryException.
Dimensiunea și dimensiunea elementului
Dimensiunea matricei nu depinde de tipul elementelor sale. Dimensiunea reprezintă întotdeauna numărul total de elemente, nu numărul de octeți ocupați de matrice atunci când este stocat.
Nu este sigur să se facă presupuneri despre modul în care matricea este stocată în memorie. Depozitarea depinde de dimensionalitatea datelor platformei, astfel încât aceeași matrice poate consuma mai multă memorie pe sisteme pe 64 de biți decât pe sisteme pe 32 de biți. În funcție de configurația sistemului, atunci când matricea este inițializată, CLR (Common Language Runtime) poate indica metode de stocare, cum ar fi elemente de ambalare, cât mai apropiate posibil între ele sau alinierea tuturor elementelor de-a lungul granițelor de memorie hardware. În plus, matricea trebuie să stocheze informațiile de serviciu, iar mărimea acestor informații crește cu fiecare adăugare a măsurătorii.
Tipuri de date
Fiecare matrice are un tip de date, dar acest tip este diferit de tipul de date al elementelor sale. Nu există un singur tip de date adecvat pentru toate matricele. În schimb, tipul datelor de matrice este determinat de numărul de dimensiuni ale matricei sau de rang. și tipul de date al elementelor de matrice. Două variabile de matrice au același tip numai dacă matricele de același rang conțin date de același tip. Lungimile măsurătorilor matricei nu afectează tipul de date al matricei.
Fiecare matrice este moștenită din clasa System. Array. și puteți declara o variabilă de tip Array. dar nu puteți crea o matrice de tip Array. În plus, operatorul ReDim (Visual Basic) nu poate funcționa cu o variabilă declarată ca tip Array. Din acest motiv, și pentru scrierea strictă, se recomandă să declare fiecare matrice ca un tip specific, de exemplu, Integer. ca în exemplul anterior.
Puteți afla tipul de date al unei matrice sau al elementelor sale în mai multe moduri.
Puteți apela metoda Obiect. GetType pentru o variabilă pentru a prelua un obiect Type de tipul variabilei run-time. Obiectul Type conține informații detaliate în proprietățile și metodele sale.
Puteți trece o variabilă la funcția TypeName. pentru a obține obiectul String. care conține numele tipului runtime.
Puteți trece o variabilă la funcția VarType pentru a obține valoarea VariantType. reprezentând clasificarea unui tip variabil.
Următorul exemplu numește funcția TypeName pentru a determina tipul matricei și tipul elementelor din matrice. Matricea este de tip Integer (,). iar elementele matricei sunt de tip Integer.
Deși colecțiile sunt utilizate cel mai des pentru a lucra cu tipul de date obiect. acestea pot fi folosite pentru a lucra cu date de orice tip. În unele cazuri, stocarea datelor într-o colecție poate fi mai eficientă decât într-o matrice.
Dacă doriți să modificați dimensiunea unui matrice, trebuie să utilizați operatorul ReDim (Visual Basic). După aceasta, Visual Basic creează o nouă matrice și eliberează matricea anterioară. Acest lucru necesită timp pentru a finaliza. Astfel, dacă numărul de elemente în timpul lucrărilor se schimbă frecvent sau numărul maxim de elemente necesare nu poate fi prezis, puteți obține performanțe mai mari atunci când utilizați colecția.
O colecție care nu trebuie să creeze un obiect nou sau să copieze elemente existente poate gestiona modificările dimensiunii în mai puțin timp decât arrayul pe care ReDim ar trebui să-l folosească. Dar dacă dimensiunea nu se schimbă sau se schimbă destul de rar, atunci matricea este probabil mai eficientă. Ca întotdeauna, performanța depinde mai mult de aplicație. Deseori merită timpul să testați atât matricea, cât și colecția.
Colecții specializate
NET Framework oferă, de asemenea, un set de clase, interfețe și structuri pentru colecții generale și speciale. Colecțiile System.Collections și System.Collections.Special namespaces conțin definiții și implementări care includ dicționare, liste, cozi și stive. Spațiul de nume System.Collections.Generic oferă multe dintre aceste versiuni generice care iau unul sau mai multe argumente.
Dacă colecția conține elemente de un singur tip particular de date, atunci colecția universală are avantajul unui tip de securitate forțată. Pentru mai multe informații despre medicamentele generice, consultați Tipurile universale din Visual Basic (Visual Basic).
Colecții specializate
NET Framework oferă, de asemenea, un set de clase, interfețe și structuri pentru colecții generale și speciale. Colecțiile System.Collections și System.Collections.Special namespaces conțin definiții și implementări care includ dicționare, liste, cozi și stive. Spațiul de nume System.Collections.Generic oferă multe dintre aceste versiuni generice care iau unul sau mai multe argumente.
Dacă colecția conține elemente de un singur tip particular de date, atunci colecția universală are avantajul unui tip de securitate forțată. Pentru mai multe informații despre medicamentele generice, consultați Tipurile universale din Visual Basic (Visual Basic).
Următorul exemplu folosește clasa.NET Framework .NET Framework System.Collections.Generic. listă