Einführung in 2D-Arrays in C #

Zweidimensionale Arrays sind eine Sammlung homogener Elemente, die sich über mehrere Zeilen und Spalten erstrecken und die Form einer Matrix annehmen. Unten sehen Sie ein Beispiel für ein 2D-Array mit m Zeilen und n Spalten, wodurch eine Matrix mit mxn-Konfigurationen erstellt wird.

( a1, a2, a3, a4, …, an
b1, b2, b3, b4, …, bn
c1, c2, c3, c4, …, cn
.
.
.
m1, m2, m3, m4, …, mn )

Konzept gezackter Arrays

Ein gezacktes Array ist ein Array von Arrays. Gezackte Arrays sind im Wesentlichen mehrere Arrays, die zu einem mehrdimensionalen Array gezackt sind. Ein zweidimensionales, gezacktes Array kann ungefähr so ​​aussehen:

( ( a1, a2, a3, a4, …, an ),
( b1, b2, b3, b4, …, b20 ),
( c1, c2, c3, c4, …, c30 ),
.
.
.
( m1, m2, m3, m4, …, m25 ) )

Beachten Sie, dass alle Zeilen eines gezackten Arrays möglicherweise dieselbe Anzahl von Elementen enthalten oder nicht.

Echte 2D-Arrays gegen gezackte Arrays

Gezackte Arrays unterscheiden sich in Bezug auf die Implementierung grundlegend von echten 2D-Arrays. Es ist wichtig zu verstehen, wie C # sowohl mehrdimensionale als auch gezackte Arrays implementiert.

Programmiersprachen unterscheiden sich in der Implementierung mehrdimensionaler Arrays. Einige Programmiersprachen wie C, C ++, C #, Fortran usw. unterstützen echte 2D-Arrays. Während es andere gibt, die dieses Verhalten mit Arrays von Arrays oder gezackten Arrays simulieren. Wie unterscheidet sich ein echtes zweidimensionales Array von gezackten Arrays?

Die beiden Implementierungen mehrdimensionaler Arrays unterscheiden sich hinsichtlich des Speicherverbrauchs. Während ein echtes 2D-Array m Zeilen mit jeweils n Elementen haben würde, könnte ein gezacktes Array m Zeilen mit jeweils einer unterschiedlichen Anzahl von Elementen haben. Dies führt zu einer minimalen Verschwendung von Speicherplatz für Datensätze. Daher ist das unten gezackte Array vollkommen in Ordnung:

int()() jagged array = ( (1, 2, 3, 4),
(5, 6, 7),
(8, 9) )

Wenn derselbe Datensatz in ein echtes 2D-Array implementiert werden würde, wäre dies wie folgt gewesen:

int(, ) multiDimArray = ( 1, 2, 3, 4
5, 6, 7, 0
8, 9, 0, 0 )

Operationen auf 2D-Arrays in C #

Hier einige Operationen an 2D-Arrays:

1. Konstruieren Sie ein C # 2D-Array

Sehen wir uns an, wie Sie ein 2D-Array in C # deklarieren und wie Sie ein 2D-Array in C # nicht deklarieren.

Wie man?

Eine echte 2D-Array-Implementierung in C # beginnt mit der Array-Deklaration. Es sieht so aus:

int(, ) arr2D;
string(, ) arr2D_s;

Die Anzahl der Kommas in der Definition bestimmt die Dimension des Arrays. Beachten Sie, dass Sie die Größe des Arrays nicht in der Array-Deklaration angeben können. Dies muss während der Initialisierung eines Arrays erfolgen.

Wie nicht?

Es ist leicht, zwischen den Implementierungen von 2D-Arrays und gezackten Arrays zu verwechseln. Eine gezackte Array-Deklaration sieht folgendermaßen aus:

int()() jagged array;

2. Initialisieren Sie das C # 2D-Array

Der nächste Schritt ist die Initialisierung des soeben deklarierten 2D-Arrays. Es gibt verschiedene Möglichkeiten, dies zu tun.

Verwenden des neuen Operators

arr2D = new int(2, 3); //separate initialization
string(, ) arr2D_s = new string(4, 5); //with declaration

Mit Werten initialisieren

//without dimensions
arr2D = new int(, )((1, 2), (3, 4), (5, 6));
//with declaration
arr2D_s = new string(2, 2)((“one”, ”two”), (“three”, “four”));

Ohne den neuen Operator

Int(, ) arr2D_a = ((1, 2), (3, 4), (5, 6), (7, 8));

3. Lesen Sie die Elemente aus dem C # 2D-Array

Lesen Sie ein einzelnes Element

Die nächste Operation ist das Lesen der Elemente aus dem 2D-Array. Da das 2D-Array eine Matrix aus mxn Elementen ist, hat jedes Element eine bestimmte Kombination aus Zeilenindex und Spaltenindex. Wir können auf die Elemente zugreifen, indem wir den Zeilenindex und den Spaltenindex im Index angeben. Ein Beispiel ist unten:

int(, ) arr2D_i = ((1, 2), (3, 4), (5, 6), (7, 8));
string arr2D_s = ((“one”, ”two”), (“three”, “four”));
int val_i = arr2D_i(2, 1); //returns '6'
string val_s = arr2D_s(1, 1); //returns 'four'

Hinweis: Die Indizes von Zeilen und Spalten beginnen bei 0. Somit ist die Indexposition (0, 0) das erste Element und (m-1, n-1) das letzte Element des Arrays.

Lesen Sie alle Elemente

Die obige Methode liefert jedoch den Wert eines einzelnen Elements im Array. Wie durchlaufen wir das gesamte Array, um jedes einzelne Element davon zu lesen? Die einfache Lösung besteht darin, das gesamte Array mit verschachtelten for / while-Schleifen zu durchlaufen.

Code

using System;
public class Program
(
public static void Main()
(
int(, ) arr2D_i = new int(3, 3)((1, 2, 3), (4, 5, 6), (7, 8, 9));
//reading all the elements through for loop
for (int i = 0; i < 3; i++)
(
for (int j = 0; j < 3; j++)
(
Console.Write(arr2D_i(i, j) + "\t");
)
Console.WriteLine("\n");
)
)
)

Ausgabe

Die GetLength () -Methode

Okay. Das obige Beispiel funktioniert jedoch nur, wenn ich die Anzahl der Elemente im Array vorher kenne. Was ist, wenn mein Array dynamisch ist? Wie durchquere ich alle Elemente eines dynamischen Arrays? Hier kommt die GetLength-Methode zu unserer Rettung.

int arr2D.GetLength (0); // gibt die erste Dimension (Zeilen) zurück

int arr2D.GetLength (1); // gibt die zweite Dimension (Spalten) zurück

Code

using System;
public class Program
(
public static void Main()
(
int(, ) arr2D_i = new int(3, 3)((1, 2, 3), (4, 5, 6), (7, 8, 9));
//reading all the elements through for loop
for (int i = 0; i < arr2D_i.GetLength(0); i++)
(
for (int j = 0; j < arr2D_i.GetLength(1); j++)
(
Console.Write(arr2D_i(i, j) + "\t");
)
Console.WriteLine("\n");
)
)
)

Ausgabe

Die Leistung von für jede Schleife

Die for-each-Schleife führt eine Reihe von Befehlen für jedes Element des Arrays aus. Dies ist ein sehr leistungsfähiger Loop-Mechanismus, dessen Verwendung dringend empfohlen wird, da er effizienter ist als ein herkömmlicher for-Loop.

Code

using System;
public class Program
(
public static void Main()
(
string(, ) arr2D_s = new string(3, 3)(("one", "two", "three"), ("four", "five", "six"), ("seven", "eight", "nine"));
//reading all the elements through foreach loop
foreach(var ele in arr2D_s)
(
Console.WriteLine(ele);
)
)
)

Ausgabe

4. Fügen Sie Elemente in ein C # 2D-Array ein

Sehen wir uns nun ein Beispiel zum Einfügen von Elementen in ein C # 2D-Array an. Die Idee ist, jede Position des Arrays zu durchlaufen und ihr einen Wert zuzuweisen.

Code

using System;
public class Program
(
public static void Main()
(
int(, ) arr2D_i = new int(3, 3)((1, 2, 3), (4, 5, 6), (7, 8, 9));
int(, ) squares = new int(3, 3);
int(, ) cubes = new int(3, 3);
for (int i = 0; i < arr2D_i.GetLength(0); i++)
(
for (int j = 0; j < arr2D_i.GetLength(1); j++)
(
squares(i, j) = arr2D_i(i, j) * arr2D_i(i, j);
cubes(i, j) = squares(i, j) * arr2D_i(i, j);
)
)
Console.WriteLine("Squares\n");
DisplayArray(squares);
Console.WriteLine("\n\nCubes\n");
DisplayArray(cubes);
)
static void DisplayArray(int(, ) arr)
(
for (int i = 0; i < arr.GetLength(0); i++)
(
for (int j = 0; j < arr.GetLength(1); j++)
( Console.Write(arr(i, j) + "\t"); )
Console.WriteLine("\n");
)
)
)

Ausgabe

5. Aktualisieren Sie die Elemente in C # 2D Array

Wir werden unser Array aktualisieren, um jedes Element mit 2 zu multiplizieren. Die Idee ist, jede Position des Arrays zu durchlaufen und den Wert zu aktualisieren, den es enthält.

Code

using System;
public class Program
(
public static void Main()
(
int(, ) arr2D_i = new int(3, 3)((1, 2, 3), (4, 5, 6), (7, 8, 9));
Console.WriteLine("Original Array\n");
DisplayArray(arr2D_i);
for (int i = 0; i < arr2D_i.GetLength(0); i++)
(
for (int j = 0; j < arr2D_i.GetLength(1); j++)
(
arr2D_i(i, j) *= 2;
)
)
Console.WriteLine("\n\nUpdated Array (multiplied by 2)\n");
DisplayArray(arr2D_i);
)
static void DisplayArray(int(, ) arr)
(
for (int i = 0; i < arr.GetLength(0); i++)
(
for (int j = 0; j < arr.GetLength(1); j++)
(
Console.Write(arr(i, j) + "\t");
)
Console.WriteLine("\n");
)
)
)

Ausgabe

6. Löschen Sie die Elemente im C # 2D-Array

Dies ist eine schwierige Operation. Es ist nicht möglich, ein einzelnes Element aus einem echten C # 2D-Array zu löschen. Durch das Löschen eines einzelnen Elements werden die Abmessungen des Arrays so gestört, dass es keine Matrix mehr darstellt. C # erlaubt dies nur, wenn es sich um ein gezacktes Array handelt.

Also, was ist die Lösung? Löschen wir die gesamte Zeile oder die gesamte Spalte? Nein, C # würde das auch nicht zulassen. Das Array hat eine feste Größe, wenn es deklariert oder initialisiert wird. Es wurden feste Speicherbytes zugewiesen. Das können wir zur Laufzeit nicht ändern.

Die Lösung besteht darin, ein neues Array ohne die zu löschenden Elemente zu erstellen.

Code

using System;
public class Program
(
public static void Main()
(
int(, ) arr2D_i = new int(3, 3)((1, 2, 3), (4, 5, 6), (7, 8, 9));
int(, ) new_array = new int(2, 2);
Console.WriteLine("Original Array\n");
DisplayArray(arr2D_i);
int rowToDel = 2;
int colToDel = 2;
for (int i = 0; i < arr2D_i.GetLength(0); i++)
(
if(i==rowToDel)
continue;
for (int j = 0; j < arr2D_i.GetLength(1); j++)
(
if(j==colToDel)
continue;
new_array(i, j)=arr2D_i(i, j);
)
)
Console.WriteLine("\n\nArray after deleting elements\n");
DisplayArray(new_array);
)
static void DisplayArray(int(, ) arr)
(
for (int i = 0; i < arr.GetLength(0); i++)
(
for (int j = 0; j < arr.GetLength(1); j++)
(
Console.Write(arr(i, j) + "\t");
)
Console.WriteLine("\n");
)
)
)

Ausgabe

Fazit

Wir haben also gesehen, wie ein 2D-Array in C # implementiert ist und welche verschiedenen CRUD-Operationen wir darauf ausführen können. Wir haben auch den Unterschied zwischen einer echten 2D-Implementierung und einem gezackten Array erkannt. In C # stehen viel mehr Methoden zur Verfügung, um die Entwickler bei der problemlosen Arbeit mit Arrays zu unterstützen. Überprüfen Sie sie in den MSDN-Dokumenten.

Empfohlene Artikel

Dies ist eine Anleitung zu 2D-Arrays in C #. Hier diskutieren wir das Konzept von gezackten Arrays zusammen mit Operationen auf 2D-Arrays in C #. Sie können sich auch die folgenden Artikel ansehen, um mehr zu erfahren.

  1. 2D-Arrays in Java
  2. 2D-Arrays in Python
  3. Arrays in C #
  4. Arrays in C ++
  5. Arrays in PHP
  6. 2D-Grafik in Java
  7. Wie funktionieren Arrays und Listen in Python?
  8. Mehrdimensionale Arrays in C ++ mit Beispielen
  9. 2D Arrays in PHP