2009-02-14 15 views
35

Ich versuche, ein Array von Arrays zu erstellen, die wiederholt Daten verwenden werden, so etwas wie unten:C# ein Array von Arrays erstellen

int[] list1 = new int[4] { 1, 2, 3, 4}; 
int[] list2 = new int[4] { 5, 6, 7, 8}; 
int[] list3 = new int[4] { 1, 3, 2, 1 }; 
int[] list4 = new int[4] { 5, 4, 3, 2 }; 

int[,] lists = new int[4, 4] { list1 , list2 , list3 , list4 }; 

ich nicht bekommen kann es funktionieren, und ich bin frage mich, ob ich mich dem Unrecht annähere.

Was ich versuche, ist eine Art Methode zu erstellen, eine lange Liste zu erstellen, wenn die Werte, damit ich sie in einer bestimmten Reihenfolge wiederholt verarbeiten kann. Etwas wie,

int[,] lists = new int[90,4] { list1, list1, list3, list1, list2,(and so on)}; 

for (int i = 0,i < 90;++i) { 
    doStuff(lists[i]); 
} 

und haben die Arrays an doStuff() in Reihenfolge übergeben. Gehe ich völlig falsch herum, oder fehlt mir etwas, um das Array von Arrays zu erstellen?

Antwort

52

Was Sie tun müssen, ist dies:

int[] list1 = new int[4] { 1, 2, 3, 4}; 
int[] list2 = new int[4] { 5, 6, 7, 8}; 
int[] list3 = new int[4] { 1, 3, 2, 1 }; 
int[] list4 = new int[4] { 5, 4, 3, 2 }; 

int[][] lists = new int[][] { list1 , list2 , list3 , list4 }; 

Eine weitere Alternative wäre, eine List<int[]> Art zu schaffen:

List<int[]> data=new List<int[]>(){list1,list2,list3,list4}; 
+1

Wie erstelle ich ein leeres Array von Arrays mit einer festen Größe? Die einzelnen Arrays, die in dem Array gespeichert sind, können variieren, aber es wird eine feste Anzahl von Arrays innerhalb des Master-Arrays geben. –

5

Das Problem ist, dass Sie die Elemente in Listen zu definieren versuchen zu mehrere Listen (nicht mehrere Ints wie definiert). Sie sollten solche Listen definieren.

int[,] list = new int[4,4] { 
{1,2,3,4}, 
{5,6,7,8}, 
{1,3,2,1}, 
{5,4,3,2}}; 

Sie auch

int[] list1 = new int[4] { 1, 2, 3, 4}; 
int[] list2 = new int[4] { 5, 6, 7, 8}; 
int[] list3 = new int[4] { 1, 3, 2, 1 }; 
int[] list4 = new int[4] { 5, 4, 3, 2 }; 

int[,] lists = new int[4,4] { 
{list1[0],list1[1],list1[2],list1[3]}, 
{list2[0],list2[1],list2[2],list2[3]}, 
etc...}; 
3

tun könnte, ich glaube, Sie für Jagged Arrays suchen können, die von multidimensionalen Arrays unterschiedlich sind in C# (wie Sie in Ihrem Beispiel verwenden). Konvertieren der Arrays in Ihren Deklarationen in gezackte Arrays sollte es funktionieren. Sie müssen jedoch immer noch zwei Schleifen verwenden, um alle Elemente im 2D-gezackten Array zu durchlaufen.

+0

Der Link in Ihrer Antwort leitet einfach auf eine Seite über "The new Surface Pro" um. –

+0

Dieser Beitrag ist 8 Jahre alt ... Ich denke Linkrot ist zu erwarten! – Noldorin

+1

Hier ist ein aktuelles [MSDN-Dokument über gezackte Arrays] (https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/arrays/jagged-arrays) –

Verwandte Themen