2008-08-25 7 views
2

Sagen wir, ich habe ein .NET Array von n Anzahl von Dimensionen. Ich würde gerne durch die Elemente foreach und so etwas wie ausdrucken:.NET Multidimensionaler Array-Druck

[0, 0, 0] = 2 
[0, 0, 1] = 32 

Und so weiter. Ich könnte eine Schleife schreiben, indem ich einige der Funktionen Rank und Dimension verwende, um die Indizes zu erstellen. Gibt es stattdessen eine eingebaute Funktion?

Antwort

2

Danke für die Antwort, hier ist das, was ich geschrieben habe, während ich wartete:

public static string Format(Array array) 
{ 
    var builder = new StringBuilder(); 
    builder.AppendLine("Count: " + array.Length); 
    var counter = 0; 

    var dimensions = new List<int>(); 
    for (int i = 0; i < array.Rank; i++) 
    { 
     dimensions.Add(array.GetUpperBound(i) + 1); 
    } 

    foreach (var current in array) 
    { 
     var index = ""; 
     var remainder = counter; 
     foreach (var bound in dimensions) 
     { 
      index = remainder % bound + ", " + index; 
      remainder = remainder/bound; 
     } 
     index = index.Substring(0, index.Length - 2); 

     builder.AppendLine(" [" + index + "] " + current); 
     counter++; 
    } 
    return builder.ToString(); 
}