Feedback

Mehrimensionales Array durch iterieren

Sprache: C#

Viele kennen die Methode GetLength nicht. Mithilfe dieser Methode kann man einfach die Länge einer Dimension eines Arrays ausfragen. MSDN Dokumentationen: GetLowerBound: http://msdn.microsoft.com/de-de/library/system.array.getlowerbound.aspx GetUpperBound: http://msdn.microsoft.com/de-de/library/system.array.getupperbound.aspx GetLength: http://msdn.microsoft.com/de-de/library/system.array.getlength.aspx Dieses kleine Snippet geht alle Elemente eines solchen Mehrdimensionalen Arrays durch. Das einzige was man natürlich wissen muss, ist die Anzahl der Dimensionen.
//2 Dimensionen
//2-Dimensionales Array anlegen, kann eine beliebige Größe und einen beliebigen Typ haben
int[,] obj2 = new int[10, 20];

//Alle Elemente durchgehen und zuweisen
for (int x = obj2.GetLowerBound(0); x < obj2.GetLength(0); ++x)
    for (int y = obj2.GetLowerBound(1); y < obj2.GetLength(1); ++y)
        obj2[x, y] = x * y;


//3 Dimensionen
//3-Dimensionales Array anlegen, kann eine beliebige Größe und einen beliebigen Typ haben
int[, ,] obj3 = new int[10, 20, 30];

//Alle Elemente durchgehen und zuweisen
for (int x = obj3.GetLowerBound(0); x < obj3.GetLength(0); ++x)
    for (int y = obj3.GetLowerBound(1); y < obj3.GetLength(1); ++y)
        for (int z = obj3.GetLowerBound(2); z < obj3.GetLength(2); ++z)
            obj3[x, y, z] = x * y * z;
//2 Dimensionen
//2-Dimensionales Array anlegen, kann eine beliebige Größe und einen beliebigen Typ haben
int[,] obj2 = new int[10, 20];

//Alle Elemente durchgehen und zuweisen
for (int x = obj2.GetLowerBound(0); x < obj2.GetLength(0); ++x)
    for (int y = obj2.GetLowerBound(1); y < obj2.GetLength(1); ++y)
        obj2[x, y] = x * y;


//3 Dimensionen
//3-Dimensionales Array anlegen, kann eine beliebige Größe und einen beliebigen Typ haben
int[, ,] obj3 = new int[10, 20, 30];

//Alle Elemente durchgehen und zuweisen
for (int x = obj3.GetLowerBound(0); x < obj3.GetLength(0); ++x)
    for (int y = obj3.GetLowerBound(1); y < obj3.GetLength(1); ++y)
        for (int z = obj3.GetLowerBound(2); z < obj3.GetLength(2); ++z)
            obj3[x, y, z] = x * y * z;

1 Kommentar