Tutorial C# Array: Creați, declarați, inițializați

⚡ Rezumat inteligent

Matricele C# stochează o colecție de elemente de dimensiune fixă ​​care au același tip de date sub un singur nume de variabilă. Fiecare element se află la un index cu bază zero, astfel încât declararea, inițializarea și accesarea valorilor rămân rapide și previzibile.

  • 📌 Definiție: O matrice conține mai multe valori de același tip în poziții indexate, la care se ajunge printr-o singură variabilă.
  • Declaraţie: Un tip de date urmat de paranteze pătrate și un nume declară o matrice, de exemplu valori Int32[].
  • 🔢 Inițializare: Cuvântul cheie nou setează dimensiunea, apoi fiecare index primește o valoare, cum ar fi values[0]=1.
  • 🔍 Acces: Indexarea cu bază zero citește sau scrie orice element, deci primul element este values[0] și numărătoarea începe de la 0.
  • 🔁 Repetare: O buclă foreach parcurge fiecare element fără un index, ceea ce evită greșelile în afara intervalului pe matricele mai mari.
  • 🤖 Asistență AI: GitHub Copilot generează exemple de matrice, în timp ce ML.NET încarcă matrice numerice ca funcționalități pentru modelele de învățare automată.

C# Arrays

Ce este o matrice în C#?

O matrice este folosită pentru a stoca o colecție sau o serie de elemente. Aceste elemente vor fi de același tip.

Deci, de exemplu, dacă ați avut o matrice de valori întregi, matricea ar putea fi o colecție de valori precum [1, 2, 3, 4]. Aici numărul de elemente din matrice este 4.

Matricele sunt utile atunci când doriți să stocați o colecție de valori de același tip. Deci, în loc să declari a variabil pentru fiecare element, puteți declara doar o variabilă.

Această variabilă va indica o matrice sau o listă de elemente, care va fi responsabilă pentru stocarea elementelor matricei.

Să ne uităm la cum putem lucra cu matrice în C#. În exemplul nostru, vom declara o matrice de numere întregi și vom lucra cu ele în consecință.

Rețineți că tot codul de mai jos este făcut în fișierul Program.cs.

Pas 1) Declararea unei matrice – Primul pas este declararea unei matrice. Să vedem cum putem realiza acest lucru prin exemplul de cod de mai jos.

Matrice în C#

Code Explicaţie:-

  1. Prima parte este datatype. Specifică tipul de elemente utilizate în matrice. Deci, în cazul nostru, creăm o matrice de numere întregi.
  2. A doua parte [ ], care specifică rangul matricei. (Rangul este un substituent care specifică numărul de elemente pe care le va conține matricea)
  3. Urmează numele matricei care în cazul nostru este „valori”. Rețineți că vedeți o subliniere ondulată verde, nu vă faceți griji pentru asta. Adică doar .Net spune că ați declarat o matrice, dar nu o utilizați nicăieri.

Pas 2) Următorul pas este inițializarea matricei. Aici vom specifica numărul de valori pe care matrice le va deține. De asemenea, vom atribui valori fiecărui element al matricei.

Matrice în C#

Code Explicaţie:-

  1. Mai întâi, setăm numărul de elemente pe care matrice le va păstra la 3. Deci, între paranteze drepte, spunem că matricea va conține 3 elemente.
  2. Apoi atribuim valori fiecărui element al tabloului. Putem face acest lucru specificând numele variabilei + poziția indexului în tablou. Deci, values[0] înseamnă că stocăm o valoare în prima poziție a tabloului. În mod similar, pentru a accesa a doua poziție, folosim notația values[1] și așa mai departe.

notițe: – În Arrays, poziția indexului începe de la 0.

Pas 3) Să afișăm acum elementele individuale ale matricei în Consolă. Să adăugăm codul de mai jos pentru a realiza acest lucru.

Matrice în C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DemoApplication
{
 class Program
 {
  static void Main(string[] args) 
  {
   Int32[] value;
   value=new Int32[3];
   
   value[0]=1;
   value[1]=2;
   value[2]=3;
   
   Console.WriteLine(value[0]);
   Console.WriteLine(value[1]);
   Console.WriteLine(value[2]);
    
   Console.ReadKey(); 
  }
 }
}

Code Explicaţie:-

Aceasta este partea simplă în care folosim metoda Console.WriteLine pentru a trimite fiecare valoare a elementului către consolă.

Rețineți că, din nou, accesăm fiecare element cu ajutorul numelui variabilei matricei împreună cu poziția indexului.

Dacă codul de mai sus este introdus corect și programul este executat, va fi afișată următoarea ieșire.

ieșire:

Matrice în C#

Din rezultat, puteți vedea toate valorile matricei care sunt afișate în Consolă.

Cum se parcurge o buclă printr-un array C# folosind foreach

Citirea fiecărui element după indexul său funcționează, dar devine plictisitoare atunci când un tablou conține mai multe valori. Bucla foreach oferă o modalitate mai curată de a vizita fiecare element al unui tablou în ordine, fără a... tracregândirea unei variabile index.

Instrucțiunea foreach preia fiecare element din matrice pe rând și îl copiază într-o variabilă de buclă. Apoi, utilizați acea variabilă în interiorul corpului buclei. Deoarece bucla se oprește automat la ultimul element, foreach elimină riscul de citire după sfârșitul matricei.

using System;
namespace DemoApplication
{
 class Program
 {
  static void Main(string[] args)
  {
   Int32[] values = new Int32[3] {1, 2, 3};
   foreach (Int32 item in values)
   {
    Console.WriteLine(item);
   }
   Console.ReadKey();
  }
 }
}

Exemplul de mai sus declară și inițializează un tablou de trei numere întregi, apoi îl parcurge cu foreach. La fiecare trecere, variabila articol primește următoarea valoare, iar Console.WriteLine o afișează. Rezultatul este numerele 1, 2 și 3 pe linii separate.

Puncte cheie de reținut despre foreach cu matrice:

  • Variabila buclă este doar pentru citire, deci foreach este cea mai bună metodă pentru citirea valorilor, decât pentru modificarea lor pe loc.
  • Pentru a modifica elementele în timp ce se toaleazăping, utilizați în schimb o buclă for cu un index.
  • foreach funcționează cu tablouri unidimensionale, tablouri multidimensionale și orice colecție care acceptă iterație.

Matrice multidimensionale C#

Tablourile prezentate până acum sunt unidimensionale, adică stochează o listă simplă de valori. C# acceptă, de asemenea, tablouri multidimensionale, care aranjează elementele într-o grilă de rânduri și coloane. Un tablou bidimensional este cea mai comună formă și se potrivește datelor precum matrici, table de joc și tabele.

Declari un tablou bidimensional plasând o virgulă între parantezele pătrate. Fiecare virgulă suplimentară adaugă o altă dimensiune, deci int[,] este bidimensional și int[,,] este tridimensional. Elementele sunt apoi accesate cu un index per dimensiune.

using System;
namespace DemoApplication
{
 class Program
 {
  static void Main(string[] args)
  {
   int[,] matrix = new int[2, 2] { {1, 2}, {3, 4} };
   Console.WriteLine(matrix[0, 0]);
   Console.WriteLine(matrix[1, 1]);
   Console.ReadKey();
  }
 }
}

Aici, matricea de tip tablou conține două rânduri și două coloane. Elementul matrix[0, 0] returnează 1, iar matrix[1, 1] returnează 4. Numărul de dimensiuni este fix la declararea tabloului, în timp ce dimensiunea fiecărei dimensiuni este setată la crearea tabloului.

Matrice zimțate C#

O matrice zimțată este o matrice ale cărei elemente sunt ele însele matrice. Spre deosebire de o matrice multidimensională dreptunghiulară, fiecare matrice interioară poate avea o lungime diferită, motiv pentru care o matrice zimțată este adesea numită o matrice de matrice. Această flexibilitate este utilă atunci când rândurile conțin în mod natural numere diferite de valori.

Declari o matrice zimțată cu două seturi de paranteze pătrate, apoi creezi fiecare matrice internă separat. Următorul exemplu construiește o matrice zimțată în care primul rând conține trei valori, iar al doilea rând conține două.

using System;
namespace DemoApplication
{
 class Program
 {
  static void Main(string[] args)
  {
   int[][] jagged = new int[2][];
   jagged[0] = new int[] {1, 2, 3};
   jagged[1] = new int[] {4, 5};
   Console.WriteLine(jagged[0][2]);
   Console.WriteLine(jagged[1][1]);
   Console.ReadKey();
  }
 }
}

Expresia jagged[0][2] citește al treilea element al primului rând, care este 3, iar jagged[1][1] citește al doilea element al celui de-al doilea rând, care este 5. Deoarece fiecare rând este o matrice separată, matricele jagged utilizează memoria eficient atunci când lungimile rândurilor variază, deși necesită un pas suplimentar pentru a inițializa fiecare matrice internă.

Întrebări frecvente

Proprietatea Length returnează numărul total de elemente dintr-o matrice C#. De exemplu, values.Length returnează 3 pentru o matrice cu trei elemente. Pentru matricele multidimensionale, GetLength(dimension) returnează dimensiunea fiecărei dimensiuni specifice.

Un tablou AC# are o dimensiune fixă ​​setată la creare, în timp ce o listă crește și se micșorează dinamic. Tablourile sunt mai rapide pentru date fixe și utilizează mai puține costuri suplimentare, în timp ce o listă se potrivește colecțiilor al căror număr de elemente se modifică în timpul execuției.

Un tablou C# standard stochează elemente de același tip declarat, deci nu este permisă combinarea tipurilor. Pentru a stoca tipuri diferite, declarați un tablou object[] sau utilizați o colecție precum ArrayList, deși ambele sacrifică siguranța tipurilor la compilare.

Metoda statică Array.Sort aranjează elementele unui tablou C# în ordine crescătoare. Transmiteți tabloul către Array.Sort(values) și utilizați Array.Reverse ulterior pentru ordine descrescătoare. Sortarea funcționează pe numere, șiruri de caractere și alte tipuri comparabile.

Array.Copy duplică o gamă de elemente dintr-o matrice în alta, în timp ce metoda Clone creează o copie superficială a întregii matrice. Atribuirea unei variabile matrice alteia copiază doar referința, nu și elementele subiacente.

O excepție IndexOutOfRangeException apare atunci când codul accesează o poziție într-un tablou care nu există, cum ar fi values[5] într-un tablou cu trei elemente. Deoarece tablourile C# au bază zero, indexurile valide rulează de la 0 la Length minus unu. Validați întotdeauna mai întâi un index.

Da. GitHub Copilot sugerează declarații de matrice, inițializare și logică de buclă dintr-un comentariu sau nume de metodă din Visual Studio și VS Code. RevVizualizați fiecare sugestie pentru dimensionarea corectă și limitele indexului, deoarece Copilot poate introduce erori de tip „off-by-one” și „out of range”.

ML.NET reprezintă vectorii de caracteristici și intrările modelului ca tablouri C#, de obicei tablouri float[]. Datele de antrenament se încarcă în tablouri sau intervale, iar predicțiile returnează tablouri de scoruri. Dimensiunea fixă ​​și indexarea rapidă a tablourilor le fac eficiente pentru conductele de învățare automată.

Rezumați această postare cu: