Dynamisches Array

Chrone

Mitglied
Hallo.

Habe mit folgender funktion versucht ein Dynamisches Array zu erstellen.
Code:
public string[, ] artikelarray = new string[1,2];
private void arraygroesse()
{
	string[, ] tempartikelarray = new string[(artikelarray.Length/2)+1,2];
	artikelarray.CopyTo(tempartikelarray,0);
	artikelarray=tempartikelarray;
}
Ich kann es zwar kompilieren, aber das Programm stürzt bei folgender Zeile ab:
Code:
artikelarray=tempartikelarray;
Weil er nur 1 Dimensionale Arrays gleichstellen kann.

Wie kann ich 2Dimensionale Arrays gleichstellen
 
Hi,

hast du dein 'artikelarray' schon mal mit Daten gefuellt? Er sollte naemlich schon bei der '.CopyTo()' Methode eine Exception schmeißen, da diese Methode nur ein Ein-dimensionales Array kopieren kann.
Wenn dein zweiter Index immer nur die Groeße '2' haben wird, dann wird dir folgender Code hoffentlich helfen:
Code:
private void Test()
{
    string[,] artikelarray = new string[,] { { "aa", "ab" }, { "ba", "bb" } };
    artikelarray = this.IncreaseArray(artikelarray); // array uebergeben und vergroeßert zurueckbekommen
}

// array vergroeßern
private string[,] IncreaseArray(string[,] temp)
{
    string[,] increasedArray = new string[(temp.Length / 2) + 1, 2];

    for (int i = 0; i < temp.Length / 2; i++)
        for (int j = 0; j < 2; j++)
            increasedArray[i, j] = temp[i, j];

    return increasedArray;
}
Aber wie gesagt, nur wenn der zweite Index die konstante Groeße '2' hat.
Ich bin mir aber, erlich gesagt, nicht sicher ob das der richtige Weg ist um mit 2-dimensionalen, dynamischen Arrays umzugehen.
Sieh es einfach nur als Workaround an bis du was passenderes gefunden hast.

<edit>
Hab noch was gefunden das diese Beschraenkung auf die Groeße '2' aufhebt. Einfach die Schleife mit dieser hier austauschen:
Code:
for (int i = 0; i < temp.GetLength(0); i++)
    for (int j = 0; j < increasedArray.GetLength(1); j++)
        increasedArray[i, j] = temp[i, j];
Wusste nicht das es die Methode '.GetLength()' gibt.. Man lernt halt nie aus..
</edit>
 
Zuletzt bearbeitet:
Danke.

Werde es mal testen.

Habe noch eine Frage:
Hast du das IncreaseArray irgendwo deklariert
Oder ist dies eine vorgegebene Methode
Habe nämlich nicht im MSDN gefunden.
 
Zurück