Hallo,
entschuldigt, hoffe ich bin nicht falsch hier.
ich hab folgenden Code:
using System;
namespace RechtEckArray
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Mehrdimensionales Array als (Rechteck-Array)");
int[,] IntArray = new int[3, 10];
int k = 0;
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < IntArray.Length; j++)
{
IntArray[i, j] = k +j;
Console.WriteLine($"Inhalt von Array: {IntArray[i,j]}");
}
/* Console.WriteLine($"{k}"); */
k += 10;
}
Console.ReadLine();
}
}
}
nun wenn ich das so schreibe, gibt mir Visual Studio immer einen Fehler an.
Außerhalb der Array-Range.
Wenn ich statt:
for (int j = 0; j < IntArray.Length; j++)
nun
for (int j = 0; j < 10; j++)
angebe, funktioniert alles einwandfrei.
Wo ist da mein Denkfehler.
Ich hoffe bin an der richtigen Stelle hier. Und ja sicherlich ein Anfängerfehler, aber bin ja da zum Lernen.
lg Marc
hier könnte deine Signatur stehen!
So ein Fehler kannst Du prinzipiell super mit dem Debugger selbst lösen.
[Artikel] Debugger: Wie verwende ich den von Visual Studio?
Wenn die Exception kommt, dann kannst Du nachschauen worauf Du zugreifst und siehst, welcher Index nicht gefunden wird.
Tipp. Length ist nicht das, was Du willst.
Das Array hat eine extra Methode, wo Du die entsprechende Länge der jeweiligen Dimensionen erhälst.
Multidimensional Arrays (C# Programming Guide)
PS: bitte in Zukunft [Hinweis] Wie poste ich richtig? beachten.
Das heisst:
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Danke für das fEedback.
nun die Fehlermeldung hat mir zunächst nichts gebracht gehabt, da nur gesagt wurde , dass der Wert ausserhalb der Range war.
Nun habe ich aber auch das Problem gefunden.
Array.Length funktioniert nur, wenn das Array auch schon Daten enthält.
Mein Array war aber noch "leer".
Ich danke dennoch fürs vor allem hinweisen auf den Debugger.
und Hilfe bei der Suche.
Danke.
hier könnte deine Signatur stehen!
Dein Problem ist, dass Du mit
for (int j = 0; j < IntArray.Length; j++)
ebenfalls nur die erste Dimension abfrägst.
Ändere die innere Schleife, so dass die zweite Dimension abgefragt wird.
for (int j = 0; j < IntArray.GetLength(1); j++)