MySQL Java JavaScript PHP Python HTML-CSS C-sharp C++ Go

Clasa Array și Array-urile

Toate array-urile în C# sunt construite pe baza clasei Array din spațiul de nume System. Această clasă definește o serie de proprietăți și metode pe care le putem folosi la lucrul cu array-uri. Iată principalele proprietăți și metode:

  • Length: returnează lungimea array-ului
  • Rank: returnează dimensiunea array-ului
  • int BinarySearch(Array array, object? value): efectuează o căutare binară într-un array sortat și returnează indexul elementului găsit
  • void Clear(Array array): golește array-ul, setând valoarea implicită pentru toate elementele
  • void Copy(Array sourceArray, int sourceIndex, Array destinationArray, int destinationIndex, int length): copiază din array-ul sourceArray, începând de la indexul sourceIndex, un număr de length elemente în array-ul destinationArray, începând de la indexul destinationIndex
  • bool Exists<T>(T[] array, Predicate<T> match): verifică dacă array-ul conține elemente care satisfac condiția delegatului match
  • void Fill<T>(T[] array, T value): umple array-ul cu valoarea value
  • T? Find<T>(T[] array, Predicate<T> match): găsește primul element care satisface o anumită condiție specificată de delegatul match. Dacă elementul nu este găsit, returnează null
  • T? FindLast<T>(T[] array, Predicate<T> match): găsește ultimul element care satisface o anumită condiție specificată de delegatul match. Dacă elementul nu este găsit, returnează null
  • int FindIndex<T>(T[] array, Predicate<T> match): returnează indexul primei apariții a unui element care satisface o anumită condiție specificată de delegatul match
  • int FindLastIndex<T>(T[] array, Predicate<T> match): returnează indexul ultimei apariții a unui element care satisface o anumită condiție
  • T[] FindAll<T>(T[] array, Predicate<T> match): returnează toate elementele sub formă de array care satisfac o anumită condiție specificată de delegatul match
  • int IndexOf(Array array, object? value): returnează indexul primei apariții a unui element în array
  • int LastIndexOf(Array array, object? value): returnează indexul ultimei apariții a unui element în array
  • void Resize<T>(ref T[]? array, int newSize): modifică dimensiunea unui array unidimensional
  • void Reverse(Array array): inversează ordinea elementelor din array
  • void Sort(Array array): sortează elementele unui array unidimensional

Sortarea unui array

Să sortăm un array folosind metoda Sort():

string[] people = { "Tom", "Sam", "Bob", "Kate", "Tom", "Alice" };

Array.Sort(people);

foreach (var person in people)
   Console.Write($"{person} ");

// Alice Bob Kate Sam Tom Tom

Această metodă are multe suprascrieri. De exemplu, una dintre versiuni permite sortarea doar a unei părți din array:

string[] people = { "Tom", "Sam", "Bob", "Kate", "Tom", "Alice" };

// sortăm 3 elemente începând cu indexul 1
Array.Sort(people, 1, 3);

foreach (var person in people)
   Console.Write($"{person} ");

// Tom Bob Kate Sam Tom Alice

Căutarea indexului unui element


string[] people = { "Tom", "Sam", "Bob", "Kate", "Tom", "Alice" };

// găsim indexul primei apariții a elementului "Tom"
int tomFirstIndex = Array.IndexOf(people, "Tom");
// găsim indexul ultimei apariții a elementului "Tom"
int tomLastIndex = Array.LastIndexOf(people, "Tom");
// găsim indexul primei apariții a unui element cu lungimea șirului mai mare de 3
int lengthFirstIndex = Array.FindIndex(people, person => person.Length > 3);
// găsim indexul ultimei apariții a unui element cu lungimea șirului mai mare de 3
int lengthLastIndex = Array.FindLastIndex(people, person => person.Length > 3);

Console.WriteLine($"tomFirstIndex: {tomFirstIndex}");       // 0
Console.WriteLine($"tomLastIndex: {tomLastIndex}");         // 4
Console.WriteLine($"lengthFirstIndex: {lengthFirstIndex}"); // 3
Console.WriteLine($"lengthLastIndex: {lengthLastIndex}");   // 5

// găsim indexul elementului "Bob"
// pentru căutare binară, colecția trebuie să fie sortată
Array.Sort(people); // Alice Bob Kate Sam Tom Tom
int bobIndex = Array.BinarySearch(people, "Bob");
Console.WriteLine($"bobIndex: {bobIndex}");                 // 1

Dacă elementul nu este găsit în array, metodele returnează -1.

Căutarea unui element după o condiție

string[] people = { "Tom", "Sam", "Bob", "Kate", "Tom", "Alice" };

// găsim primul și ultimul element unde lungimea șirului este mai mare de 3 caractere
string? first = Array.Find(people, person => person.Length > 3);
Console.WriteLine(first); // Kate
string? last = Array.FindLast(people, person => person.Length > 3);
Console.WriteLine(last); // Alice

// găsim elementele cu lungimea șirului egală cu 3
string[] group = Array.FindAll(people, person => person.Length == 3);
foreach (var person in group) Console.WriteLine(person);
// Tom Sam Bob Tom

Modificarea ordinii elementelor din array

De exemplu, să inversăm ordinea elementelor:

string[] people = { "Tom", "Sam", "Bob", "Kate", "Tom", "Alice" };

Array.Reverse(people);

foreach (var person in people)
   Console.Write($"{person} ");
// Alice Tom Kate Bob Sam Tom

De asemenea, putem inversa ordinea doar pentru o parte din elemente:

string[] people = { "Tom", "Sam", "Bob", "Kate", "Tom", "Alice" };

// inversăm ordinea a 3 elemente începând cu indexul 1
Array.Reverse(people, 1, 3);

foreach (var person in people)
   Console.Write($"{person} ");
// Tom Kate Bob Sam Tom Alice

Modificarea dimensiunii array-ului

Pentru a modifica dimensiunea unui array, se folosește metoda Resize. Primul parametru este array-ul de modificat, iar al doilea parametru este numărul de elemente care ar trebui să fie în array.

Dacă al doilea parametru este mai mic decât lungimea array-ului, array-ul va fi trunchiat. Dacă valoarea parametrului este mai mare, array-ul va fi completat cu elemente suplimentare cu valoarea implicită. Primul parametru este transmis prin referință:

string[] people = { "Tom", "Sam", "Bob", "Kate", "Tom", "Alice" };

// reduc dimensiunea array-ului la 4 elemente
Array.Resize(ref people, 4);

foreach (var person in people)
   Console.Write($"{person} ");
// Tom Sam Bob Kate

Copierea unui array

Metoda Copy copiază o parte dintr-un array în altul:

string[] people = { "Tom", "Sam", "Bob", "Kate", "Tom", "Alice" };

var employees = new string[3];

// copiem 3 elemente din array-ul people începând de la indexul 1
// și le inserăm în array-ul employees începând de la indexul 0
Array.Copy(people, 1, employees, 0, 3);

foreach (var person in employees)
   Console.Write($"{person} ");
// Sam Bob Kate

În acest exemplu, copiem 3 elemente din array-ul people începând de la indexul 1 și le inserăm în array-ul employees începând de la indexul 0.