myCSharp.de - DIE C# und .NET Community
Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 
 | Suche | FAQ

» Hauptmenü
myCSharp.de
» Startseite
» Forum
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Suche
» Regeln
» Wie poste ich richtig?
» Forum-FAQ

Mitglieder
» Liste / Suche
» Wer ist wo online?

Ressourcen
» openbook: Visual C#
» openbook: OO
» Microsoft Docs

Team
» Kontakt
» Übersicht
» Wir über uns

» myCSharp.de Diskussionsforum
Du befindest Dich hier: Community-Index » Diskussionsforum » Entwicklung » Grundlagen von C# » Wieso bekomme ich eine Index Exception beim Zugriff auf ein mehrdimanesionales Array?
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | Thema zu Favoriten hinzufügen

Antwort erstellen
Zum Ende der Seite springen  

Wieso bekomme ich eine Index Exception beim Zugriff auf ein mehrdimanesionales Array?

 
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Shayliar Shayliar ist männlich
myCSharp.de-Mitglied

Dabei seit: 30.03.2019
Beiträge: 18
Entwicklungsumgebung: Visual Studio 2017
Herkunft: Düsseldorf


Shayliar ist offline Füge Shayliar Deiner Kontaktliste hinzu

Wieso bekomme ich eine Index Exception beim Zugriff auf ein mehrdimanesionales Array?

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo,
entschuldigt, hoffe ich bin nicht falsch hier.
ich hab folgenden Code:

C#-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:

C#-Code:
for (int j = 0; j < IntArray.Length; j++)

nun

C#-Code:
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
Neuer Beitrag 01.07.2020 21:37 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Abt
myCSharp.de-Team

avatar-4119.png


Dabei seit: 20.07.2008
Beiträge: 14.021
Herkunft: Stuttgart/Stockholm


Abt ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

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:
- Titel mit dem man was anfangen kann (habs editiert)
- Vollständige Exception posten.
Neuer Beitrag 01.07.2020 21:42 Beiträge des Benutzers | zu Buddylist hinzufügen
Shayliar Shayliar ist männlich
myCSharp.de-Mitglied

Dabei seit: 30.03.2019
Beiträge: 18
Entwicklungsumgebung: Visual Studio 2017
Herkunft: Düsseldorf

Themenstarter Thema begonnen von Shayliar

Shayliar ist offline Füge Shayliar Deiner Kontaktliste hinzu

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

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.
Neuer Beitrag 01.07.2020 21:49 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Caveman Caveman ist männlich
myCSharp.de-Mitglied

avatar-3854.jpg


Dabei seit: 18.10.2009
Beiträge: 135
Entwicklungsumgebung: VS2017P; VS2019P


Caveman ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Dein Problem ist, dass Du mit

C#-Code:
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.

C#-Code:
for (int j = 0; j < IntArray.GetLength(1); j++)
Neuer Beitrag 02.07.2020 19:44 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Baumstruktur | Brettstruktur       | Top 
myCSharp.de | Forum Der Startbeitrag ist älter als ein Monat.
Der letzte Beitrag ist älter als ein Monat.
Antwort erstellen


© Copyright 2003-2020 myCSharp.de-Team | Impressum | Datenschutz | Alle Rechte vorbehalten. | Dieses Portal verwendet zum korrekten Betrieb Cookies. 10.08.2020 20:19