{"id":55000006,"date":"2015-02-01T00:00:00","date_gmt":"2024-04-25T16:16:22","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=6"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"Von_VBA_Zu_C_Arrays","status":"publish","type":"post","link":"https:\/\/vbentwickler.de\/Von_VBA_Zu_C_Arrays\/","title":{"rendered":"Von VBA Zu C#: Arrays"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/vg05.met.vgwort.de\/na\/1ae75c2eda7745aa8b27d5d94a3c74d7\" width=\"1\" height=\"1\" alt=\"\"><\/p>\n<p><b>Arrays gibt es wohl in jeder Programmiersprache, jeweils mit eigenen Besonderheiten. Wie f&uuml;llt man ein Arrays? Wie greift man auf die Werte eines Arrays zu? Wie organisiert man mehrdimensionale Arrays? Wie durchl&auml;uft man die Werte eines Arrays oder ermittelt die Anzahl der enthaltenen Elemente? All diese Fragen beantwortet der vorliegende Artikel.<\/b><\/p>\n<p>Unter VBA konnten Arrays nur einfache Werttypen aufnehmen, also beispielsweise Zahlen oder Zeichenketten. Wenn Sie etwa Objekte in einer Liste speichern wollten, mussten Sie auf eine Alternative wie das <b>Collection<\/b>&#8211; oder das <b>Dictionary<\/b>-Objekt zugreifen.<\/p>\n<p>Unter C# k&ouml;nnen Sie dies gleicherma&szlig;en mit einem Array erledigen. Dies ist jedoch nicht der einzige Unterschied. In den folgenden Abschnitten erhalten Sie die Grundlagen f&uuml;r die Programmierung von Arrays mit C#.<\/p>\n<h2>Deklaration von Arrays<\/h2>\n<p>Unter VBA haben Sie ein Array durch das Hinzuf&uuml;gen eines Klammernpaares bei der Deklaration kenntlich gemacht:<\/p>\n<pre><span style=\"color:blue;\">Dim <\/span>Zahlwoerter()<span style=\"color:blue;\"> As String<\/span><\/pre>\n<p>Wenn Sie schon wussten, wie viele Elemente das Array enthalten sollte, haben Sie diese Anzahl in Klammern angegeben:<\/p>\n<pre><span style=\"color:blue;\">Dim <\/span>Zahlwoerter(9)<span style=\"color:blue;\"> As String<\/span><\/pre>\n<p>Dies bedeutete ohne weitere Angaben, dass das Array zehn Elemente mit den Indizes <b>0 <\/b>bis <b>9 <\/b>aufnehmen konnte.<\/p>\n<p>Unter C# verwenden Sie keine runden, sondern eckige Klammern, und diese geben Sie auch nicht hinter dem Variablennamen, sondern hinter dem Datentyp an:<\/p>\n<pre>string[] Zahlwoerter;<\/pre>\n<p>Nun ist nat&uuml;rlich noch nicht bekannt, wie viele Elemente das Array aufnehmen soll. Dies geben Sie auch nicht bekannt, indem Sie die Anzahl einfach in die eckigen Klammern schreiben. Vielmehr ist eine Initialisierung unter Angabe der Anzahl der Elemente n&ouml;tig. Diese k&ouml;nnen Sie in einer neuen Zeile erledigen:<\/p>\n<pre>Zahlwoerter = new string;<\/pre>\n<p>Oder Sie verwenden einfach einen Einzeiler zur gleichzeitigen Deklaration und Initialisierung:<\/p>\n<pre>string[] Zahlwoerter = new string;<\/pre>\n<p>Die Verwendung des Schl&uuml;sselworts <b>new <\/b>stellt hier im Gegensatz zum Vorgehen unter VBA heraus, dass es sich bei dem Array um ein Objekt handelt.<\/p>\n<p>Stellt sich gleich die erste Frage: Besitzt das Array nun zehn Elemente? Und die zweite gleich hinterher: Wie werden diese indiziert &#8211; beginnend mit <b>0 <\/b>oder <b>1<\/b>?<\/p>\n<p>Das Array enth&auml;lt nun tats&auml;chlich genau die angegebene Elementanzahl. Im Gegensatz zu der etwas un&uuml;bersichtlichen Vorgehensweise von VBA, bei der die Anzahl von der Basis des Index abh&auml;ngt, initialisiert C# genau mit der angegebenen Menge von Elementen.<\/p>\n<p>Der Index basiert unter C# auf dem Wert <b>0<\/b>. Auf ein Element greifen Sie &uuml;ber die Angabe des Indexwertes in eckigen Klammern zu, also etwa &uuml;ber <b>Zahlwoerter[0] <\/b>&#8211; mehr dazu weiter unten.<\/p>\n<h2>Array f&uuml;llen<\/h2>\n<p>Schauen wir uns erstmal eine einfache Methode an, das Array zu f&uuml;llen &#8211; und zwar direkt bei der Initialisierung. Ausgehend vom obigen Einzeiler gelingt dies so (in einer Zeile):<\/p>\n<pre>string[] Zahlwoerter = new String { \"Eins\", \"Zwei\", \"Drei\", \"Vier\", \"F&uuml;nf\", \"Sechs\", \"Sieben\", \"Acht\", \"Neun\", \"Zehn\" };<\/pre>\n<p>Sie geben also einfach die gew&uuml;nschten Werte in einer geschweiften Klammer und durch Kommata getrennt an.<\/p>\n<p>In diesem Fall soll das Array zehn Elemente aufnehmen und jedes der Elemente wird auch gleich gef&uuml;llt.<\/p>\n<p>Es gibt noch eine Alternative, bei der Sie die Anzahl der Elemente nicht angeben und diese direkt aus der Anzahl der &uuml;bergebenen Elemente ermittelt wird. In diesem Fall lassen Sie einfach die Angabe der Anzahl innerhalb der eckigen Klammern weg (in einer Zeile):<\/p>\n<pre>string[] Zahlwoerter = new String[] { \"Eins\", \"Zwei\", \"Drei\", \"Vier\", \"F&uuml;nf\", \"Sechs\", \"Sieben\", \"Acht\", \"Neun\", \"Zehn\" };<\/pre>\n<p>Anschlie&szlig;end geben wir die im Array gespeicherten Werte in der Konsole aus. F&uuml;r den Zugriff auf den Inhalt eines der Elemente geben Sie den Variablennamen gefolgt vom gew&uuml;nschten Index in eckigen Klammern an.<\/p>\n<p>Am einfachsten bekommen wir den Inhalt eines Elements so auf die Konsole:<\/p>\n<pre>Console.WriteLine(Zahlen[0]);<\/pre>\n<p>Wir wollen aber gleich alle zehn, und dann auch noch mit einem kleinen Hinweistext:<\/p>\n<pre>Console.WriteLine(\"Wert von Zahlwoerter[0]: {0}\", Zahlen[0]);\r\nConsole.WriteLine(\"Wert von Zahlwoerter: {0}\", Zahlen);\r\nConsole.WriteLine(\"Wert von Zahlwoerter: {0}\", Zahlen);\r\n...\r\nConsole.WriteLine(\"Wert von Zahlwoerter: {0}\", Zahlen);<\/pre>\n<p>Das Ergebnis sieht nun wie folgt aus:<\/p>\n<pre>Wert von Zahlwoerter[0]: Eins\r\nWert von Zahlwoerter: Zwei\r\nWert von Zahlwoerter: Drei\r\n...\r\nWert von Zahlwoerter: Zehn<\/pre>\n<p>Wichtig: Wenn Sie die Anzahl der zu erstellenden Elemente angeben und gleich dahinter die Elemente hinzuf&uuml;gen, muss deren Anzahl &uuml;bereinstimmen.<\/p>\n<p>Die schnellste Alternative, um ein Array direkt mit Werten zu f&uuml;llen, l&auml;sst noch ein paar Schl&uuml;sselw&ouml;rter weg und &uuml;bergibt die Werte direkt als Array an die Variable:<\/p>\n<pre>string[] Zahlwoerter = { \"Eins\", \"Zwei\", \"Drei\", \"Vier\", \"F&uuml;nf\", \"Sechs\", \"Sieben\", \"Acht\", \"Neun\", \"Zehn\" };<\/pre>\n<h2>Elemente nach Initialisierung f&uuml;llen<\/h2>\n<p>Wenn Sie das Array zun&auml;chst deklarieren und initialisieren, aber noch nicht f&uuml;llen, holen Sie dies in sp&auml;teren Anweisungen nach.<\/p>\n<p>Dazu weisen Sie einfach dem entsprechenden Element, das Sie &uuml;ber die Angabe des Indexwertes in eckigen Klammern referenzieren, den gew&uuml;nschten Wert zu:<\/p>\n<pre>string[] Zahlwoerter = new string;\r\nZahlwoerter[0] = \"Eins\";\r\nZahlwoerter = \"Zwei\";\r\nZahlwoerter = \"Drei\";<\/pre>\n<p>Wenn Sie nun alle Elemente ausgeben, bleiben die hinteren sieben leer. Die Elemente werden bei der Initialisierung gleich mit leeren Zeichenketten gef&uuml;llt.<\/p>\n<h2>0 als initialer Wert von Zahlen-Arrays<\/h2>\n<p>Probieren wir dies gleich noch mit Zahlen aus, um zu pr&uuml;fen, mit welchem Wert das Element eines Zahlen-Arrays initial gef&uuml;llt wird:<\/p>\n<pre>int[] Zahlen = new int;\r\nZahlen[0] = 1;\r\nZahlen = 2;\r\nZahlen = 3;\r\nConsole.WriteLine(\"Wert von Zahlen[0]: {0}\", Zahlen[0]);\r\nConsole.WriteLine(\"Wert von Zahlen: {0}\", Zahlen);\r\nConsole.WriteLine(\"Wert von Zahlen: {0}\", Zahlen);\r\nConsole.WriteLine(\"Wert von Zahlen: {0}\", Zahlen);\r\nConsole.WriteLine(\"Wert von Zahlen: {0}\", Zahlen);<\/pre>\n<p>Wir definieren also ein Array mit f&uuml;nf <b>int<\/b>-Elementen und f&uuml;llen dann nur drei davon. Das Ergebnis bei der Ausgabe aller Elemente inklusive der &uuml;brigen zwei sieht so aus:<\/p>\n<pre>Wert von Zahlen[0]: 1\r\nWert von Zahlen: 2\r\nWert von Zahlen: 3\r\nWert von Zahlen: 0\r\nWert von Zahlen: 0<\/pre>\n<p>Leere Zahlenelemente werden also direkt mit dem Wert <b>0 <\/b>gef&uuml;llt.<\/p>\n<h2>Gr&ouml;&szlig;e einer Dimension eines Array ermitteln<\/h2>\n<p>Unter VBA ermitteln Sie die Gr&ouml;&szlig;e eines Arrays &uuml;ber die Differenz der Funktionen <b>UBound <\/b>und <b>LBound <\/b>mit dem Array als Parameter:<\/p>\n<pre><span style=\"color:blue;\">Debug.Print<\/span> <span style=\"color:blue;\">UBound<\/span>(intZahlen()) - <span style=\"color:blue;\">LBound<\/span>(intZahlen())<\/pre>\n<p>F&uuml;r mehrdimensionale Arrays gibt es noch weitere Besonderheiten. Unter C# gibt es verschiedene Eigenschaften, mit denen Sie die Anzahl der Elemente einer Dimension sowie die Gesamtzahl der Elemente ermitteln k&ouml;nnen. Zun&auml;chst reicht uns die Anzahl der Elemente einer einzigen Dimension. Die erhalten Sie mit der Funktion <b>GetLength<\/b>:<\/p>\n<pre>Console.WriteLine(Zahlen.GetLength(0));<\/pre>\n<p><b>GetLength <\/b>erwartet als Parameter den Index der zu untersuchenden Dimension, in diesem Fall <b>0<\/b>.<\/p>\n<p>Im Falle eines eindimensionalen Arrays liefert die Funktion <b>Length <\/b>den identischen Wert. F&uuml;r mehrdimensionale Arrays liefert sie hingegen die Anzahl aller Elemente. Dementsprechend kommt sie ohne Parameter aus:<\/p>\n<pre>Console.WriteLine(Zahlen.Length);<\/pre>\n<h2>Gr&ouml;&szlig;e des Arrays zur Laufzeit &auml;ndern <\/h2>\n<p>Weiter oben haben Sie bereits gesehen, dass Sie die Gr&ouml;&szlig;e eines Arrays zur Laufzeit festlegen k&ouml;nnen. Dies ist gleichbedeutend mit der Initialisierung. Den dort angegebenen Zahlenwert, der die Anzahl der Elemente angibt, kann auch als Variable &uuml;bergeben werden &#8211; nicht immer ist ja gleich beim Programmieren bekannt, wie gro&szlig; ein Array gegebenenfalls werden soll.<\/p>\n<p>Im folgenden Beispiel legen wir die Anzahl der Elemente per Variable fest (die nat&uuml;rlich auch etwa &uuml;ber die Konsole abgefragt oder auf andere Weise ermittelt werden kann) und initialisieren das Array damit:<\/p>\n<pre>string[] Zahlwoerter;\r\nint AnzahlZahlwoerter;\r\nAnzahlZahlwoerter = 10;\r\nZahlwoerter = new string[AnzahlZahlwoerter];<\/pre>\n<p>Aber was geschieht, wenn wir das Array bereits mit Werten f&uuml;llen oder auslesen wollen, aber sp&auml;ter die Gr&ouml;&szlig;e des Arrays &auml;ndern m&uuml;ssen? Mit der Initialisierung per <b>new<\/b>-Schl&uuml;sselwort ist uns nicht geholfen, da das Array dann ja wieder leer ist.<\/p>\n<p>Genau genommen gibt es bei den Arrays keine M&ouml;glichkeit, es ohne Umweg zu vergr&ouml;&szlig;ern oder zu verkleinern. Immerhin gibt es einen Workaround. Dabei verwenden wir neben dem eigentlichen Array <b>Zahlen <\/b>ein Hilfsarray namens <b>temp<\/b>. <b>Zahlen <\/b>deklarieren wir als Array mit der Elementanzahl <b>0<\/b>, <b>temp <\/b>zun&auml;chst ohne Initialisierung.<\/p>\n<p>Dann durchlaufen wir eine Schleife von <b>1 <\/b>bis <b>10<\/b>, da wir dem Array mit jedem Durchlauf ein weiteres Element hinzuf&uuml;gen und dieses mit dem Wert der Z&auml;hlervariablen f&uuml;llen wollen. Innerhalb der Schleife initialisieren wir das Hilfsarray <b>temp <\/b>zun&auml;chst mit einer Gr&ouml;&szlig;e, welche dem Wert der Z&auml;hlervariablen entspricht.<\/p>\n<p>Dann verwenden wir die <b>CopyTo<\/b>-Methode des Arrays <b>Zahlen<\/b>, um dessen Inhalt in das Array <b>temp <\/b>zu kopieren. Schlie&szlig;lich stellen wir den Zeiger der Variablen Zahlen auf das nun in <b>temp <\/b>befindliche Array ein und weisen dem neu hinzugef&uuml;gten Element den Wert der Z&auml;hlervariablen hinzu:<\/p>\n<pre>int[] Zahlen;\r\nZahlen = new int[0];\r\nint[] temp;\r\nfor (int i = 1; i &lt;= 10; i++)\r\n{\r\n     temp = new int[i];\r\n     Zahlen.CopyTo(temp, 0);\r\n     Zahlen = temp;\r\n     Zahlen[i-1] = i;\r\n}<\/pre>\n<p>Anschlie&szlig;end verwenden wir, um ein wenig Dynamik in die Sache zu bringen, wiederum eine Schleife, um den Inhalt des Arrays auszulesen.<\/p>\n<p>Die Abbruchbedingung definieren wir diesmal allerdings mithilfe der Anzahl der im Array <b>Zahlen <\/b>befindlichen Elemente (<b>Zahlen.GetLength<\/b>):<\/p>\n<pre>for (int i = 1; i &lt;= Zahlen.GetLength(0); i++)\r\n{\r\n     Console.WriteLine(\"Wert von {0}: {1}\", i, Zahlen[i-1]);\r\n}<\/pre>\n<h2>Arrays mit foreach durchlaufen<\/h2>\n<p>In den bisherigen Beispielen haben wir die <b>for<\/b>-Schleife verwendet, um die Elemente eines Arrays zu durchlaufen. Unter VBA die einzige M&ouml;glichkeit die entsprechende <b>For&#8230;Next<\/b>-Schleife.<\/p>\n<p>Unter C# gibt es hingegen noch eine weitere Methode, um die Elemente eines Arrays zu durchlaufen, n&auml;mlich mit der <b>foreach<\/b>-Schleife. Auch unter VBA kennen Sie eine entsprechende Schleife, die mit den Schl&uuml;sselw&ouml;rtern <b>For Each <\/b>beginnt. Diese ist jedoch dem Zugriff auf die Elemente von Objektauflistungen vorbehalten.<\/p>\n<p>Das Array ist unter C# jedoch ein Objekt, daher k&ouml;nnen Sie seine Elemente auch mit der <b>foreach<\/b>-Schleife durchlaufen.<\/p>\n<p>Im folgenden Beispiel f&uuml;llen wir ein Array mit zehn Zahlw&ouml;rtern und durchlaufen dann eine <b>foreach<\/b>-Schleife. Diese deklariert mit <b>string Element <\/b>die Laufvariable, welche die Inhalte des Arrays aufnehmen soll, als Element des Arrays (<b>in Zahlwoerter<\/b>). Innerhalb der <b>foreach<\/b>-Schleife gibt die <b>WriteLine<\/b>-Anweisung direkt den Inhalt der <b>string<\/b>-Variablen <b>Element <\/b>in der Konsole aus:<\/p>\n<pre>string[] Zahlwoerter = { \"Eins\", \"Zwei\", \"Drei\", \"Vier\", \"F&uuml;nf\", \"Sechs\", \"Sieben\", \"Acht\", \"Neun\", \"Zehn\" };\r\nforeach (string Element in Zahlwoerter)\r\n{\r\n     Console.WriteLine(Element);\r\n}<\/pre>\n<p>Der Nutzen der <b>foreach<\/b>-Schleife ist in diesem Fall jedoch begrenzt. Wenn Sie beispielsweise den Indexwert ben&ouml;tigen, m&uuml;ssten Sie eine Laufvariable mitlaufen lassen, was Sie mit einer <b>for<\/b>-Schleife direkt in der Schleife erledigen k&ouml;nnen.<\/p>\n<p>Au&szlig;erdem k&ouml;nnen sie die mehrdimensionalen Arrays, die wir im Anschluss vorstellen, nur sequentiell durchlaufen, was einen gezielten Zugriff auf die Elemente erschwert.<\/p>\n<h2>Mehrdimensionale Arrays<\/h2>\n<p>Mehrdimensionale Arrays kennen Sie auch schon von VBA. Unter C# ist die Vorgehensweise &auml;hnlich. Das folgende Beispiel deklariert zun&auml;chst ein Array namens <b>Schach<\/b>. Dass es zweidimensional sein soll, geben wir durch das Komma zwischen den eckigen Klammern an.<\/p>\n<p>Danach initialisieren wir das Array und stellen die Gr&ouml;&szlig;e der einzelnen Dimensionen jeweils auf <b>2 <\/b>ein. Das Array soll also zweimal zwei Elemente aufnehmen. Die Indizes der beiden Dimensionen basieren wieder jeweils auf dem Wert <b>0<\/b>, sodass wir die Indexpaare <b>0, 0<\/b>, <b>0, 1<\/b>, <b>1, 0<\/b>, <b>1, 1<\/b> nutzen k&ouml;nnen, um die Werte zuzuweisen:<\/p>\n<pre>string[,] Schach;\r\nSchach = new string[2,2];\r\nSchach[0, 0] = \"A1\";\r\nSchach[0, 1] = \"A2\";\r\nSchach[1, 0] = \"B1\";\r\nSchach[1, 1] = \"B2\";<\/pre>\n<p>Anschlie&szlig;end durchlaufen wir das frisch erstellte und gef&uuml;llte Array innerhalb von zwei verschachtelten <b>for<\/b>-Schleifen.<\/p>\n<p>Deren Abbruchbedingung richten wir wieder an der Anzahl Elemente je Dimension des Arrays aus (<b>Schach.GetLength(0) <\/b>f&uuml;r die erste Dimension, <b>Schach.GetLength(1) <\/b>f&uuml;r die zweite Dimension):<\/p>\n<pre>for(int i = 0; i &lt;= Schach.GetLength(0)-1; i++) \r\n{\r\n     for (int j = 0; j &lt;= Schach.GetLength(1)-1; j++)\r\n     {\r\n         Console.WriteLine(\"Feld ({0}|{1}): {2}\", i, j, \r\n                                             Schach[i, j]);\r\n     }\r\n}<\/pre>\n<p>Das Ergebnis sieht wie folgt aus:<\/p>\n<pre>Feld (0|0): A1\r\nFeld (0|1): A2\r\nFeld (1|0): B1\r\nFeld (1|1): B2<\/pre>\n<h2>Mehrdimensionale Arrays einfach f&uuml;llen<\/h2>\n<p>Ein zweidimensionales Array k&ouml;nnen Sie auch wieder direkt beim Initialisieren mit Daten f&uuml;llen. Dabei ist zu beachten, dass etwa beim zweidimensionalen Array jedes Wertpaar in ein eigenes Paar geschweifter Klammern eingefasst werden muss, also etwa <b>{{&#8220;A1&#8243;,&#8221;A2&#8221;}, {&#8220;B1&#8243;,&#8221;B2&#8221;}}<\/b>.<\/p>\n<p>Die komplette Anweisung sieht so aus:<\/p>\n<pre>string[,] Schach = \r\n          new string[,] { { \"A1\", \"A2\" }, { \"B1\", \"B2\" } };<\/pre>\n<p>Sie k&ouml;nnten die Dimensionen hier auch wieder explizit angeben:<\/p>\n<pre>string[,] Schach = \r\n       new string[2, 2] { { \"A1\", \"A2\" }, { \"B1\", \"B2\" } };<\/pre>\n<p>Oder Sie verwenden gleich die einfachste Schreibweise mit der direkten Zuweisung der Werte:<\/p>\n<pre>string[,] Schach = { { \"A1\", \"A2\" }, { \"B1\", \"B2\" } };<\/pre>\n<h2>Zweidimensionales Array per Schleife f&uuml;llen<\/h2>\n<p>Schauen wir uns noch ein Array mit den Koordinaten eines kompletten Schachbretts an. Hier wollen wir nicht mehr die einzelnen Koordinaten von Hand codieren, sondern zwei Schleifen f&uuml;llen des Arrays mit acht mal acht Feldern nutzen.<\/p>\n<p>Dazu erzeugen wir zun&auml;chst die Variable <b>Schach <\/b>mit acht mal acht Elementen und durchlaufen dann zwei verschachtelte <b>for<\/b>-Schleifen von <b>0 <\/b>bis <b>7<\/b>. Innerhalb der Schleife f&uuml;gen wir dem jeweils durch die Werte der Laufvariablen <b>i <\/b>und <b>j <\/b>charakterisierten Element einen Ausdruck hinzu, der aus zwei Teilen besteht:<\/p>\n<ul>\n<li><b>(char)(i + 65) <\/b>ermittelt wie die von VBA bekannte <b>Chr<\/b>-Funktion das Zeichen zu einem ASCII-Code. Dabei konvertiert <b>char <\/b>also quasi den dahinter angegebenen Zahlenwert in ein Zeichen. <b>65 <\/b>entspricht dem Buchstaben <b>A<\/b>, daher liefert im ersten Durchgang mit <b>i = 0 <\/b>genau diesen Buchstaben.<\/li>\n<li><b>Convert.ToString(j + 1) <\/b>hingegen berechnet den Zahlenwert von <b>j + 1 <\/b>und konvertiert dies mit der <b>ToString<\/b>-Methode der <b>Convert<\/b>-Klasse in eine Zeichenkette, damit die so ermittelte Zahl problemlos mit dem zuvor ermittelten Buchstaben zusammengef&uuml;hrt werden kann.<\/li>\n<\/ul>\n<pre>string[,] Schach = new string [8,8];\r\nfor (int i = 0; i &lt;= 7; i++)\r\n{\r\n   for (int j = 0; j &lt;= 7; j++)\r\n   {\r\n     Schach[i, j] = (char)(i + 65) + Convert.ToString(j + 1);\r\n   }\r\n}<\/pre>\n<p>Danach durchlaufen wir wiederum zwei verschachtelte Schleifen und geben die Inhalte des Arrays in der Konsole aus:<\/p>\n<pre>for (int i = 0; i &lt;= Schach.GetLength(0) - 1; i++)\r\n{\r\n     for (int j = 0; j &lt;= Schach.GetLength(1) - 1; j++)\r\n     {\r\n         Console.Write(\"{0,4}\", Schach[i, j]);\r\n     }\r\n     Console.WriteLine();\r\n}<\/pre>\n<p>Das Ergebnis sieht schlie&szlig;lich wie folgt aus:<\/p>\n<pre>   A1  A2  A3  A4  A5  A6  A7  A8\r\n   B1  B2  B3  B4  B5  B6  B7  B8\r\n   C1  C2  C3  C4  C5  C6  C7  C8\r\n   D1  D2  D3  D4  D5  D6  D7  D8\r\n   E1  E2  E3  E4  E5  E6  E7  E8\r\n   F1  F2  F3  F4  F5  F6  F7  F8\r\n   G1  G2  G3  G4  G5  G6  G7  G8\r\n   H1  H2  H3  H4  H5  H6  H7  H8<\/pre>\n<h2>Gesamtzahl der Elemente ermitteln<\/h2>\n<p>Nachdem wir nun bereits ein zweidimensionales Array erstellt haben, k&ouml;nnen wir uns mit der folgenden Anweisung auch gleich die Anzahl der Elemente aller Dimensionen ausgeben lassen, die in diesem Beispiel bei <b>64 <\/b>liegt:<\/p>\n<pre>Console.WriteLine(\"Gesamtzahl: {0}\", Schach.Length);<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Arrays gibt es wohl in jeder Programmiersprache, jeweils mit eigenen Besonderheiten. Wie f&uuml;llt man ein Arrays? Wie greift man auf die Werte eines Arrays zu? Wie organisiert man mehrdimensionale Arrays? Wie durchl&auml;uft man die Werte eines Arrays oder ermittelt die Anzahl der enthaltenen Elemente? All diese Fragen beantwortet der vorliegende Artikel.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"footnotes":""},"categories":[66012015,662015,44000001,44000035,44000013,44000022],"tags":[],"yst_prominent_words":[66062094,66062087,66062092,66062081,66062082,66062084,66062086,66062083,66062088,66062099,66062091,66062097,66062090,66062089,66062085,66062095,66062098,66062093,66062096,66062100],"class_list":["post-55000006","post","type-post","status-publish","format-standard","hentry","category-66012015","category-662015","category-CGrundlagen","category-COMDLLs_programmieren","category-Visual_Studio_nutzen","category-Von_Access_zu_NET"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts\/55000006","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/comments?post=55000006"}],"version-history":[{"count":0,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts\/55000006\/revisions"}],"wp:attachment":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/media?parent=55000006"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/categories?post=55000006"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/tags?post=55000006"},{"taxonomy":"yst_prominent_words","embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/yst_prominent_words?post=55000006"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}