2010-04-30 5 views
7
  • ho bisogno di sapere come inizializzare array di array in C# ..
  • So che esistono matrice multidimensionale, ma penso che non ho bisogno che nel mio caso! Ho provato questo codice .. ma non sapevo come inizializzare con l'elenco di inizializzazione ..array di array in C#

    double [] [] a = new double [2] []; // = {{1,2}, {3 , 4}};

Grazie

PS: Se vi chiedete perché lo uso: ho bisogno di struttura dati che quando chiamo obj [0] restituisce un array .. So che è strano ..

Grazie

risposta

5

AFAIK, il modo più semplice ed battitura efficace è questo per inizializzare una matrice irregolare è:

double[][] x = new []{new[]{1d, 2d}, new[]{3d, 4.3d}}; 

Edit:

realtà questo funziona anche:

double[][] x = {new[]{1d, 2d}, new[]{3d, 4.3d}}; 
+0

Il primo non sarebbe' double [] [] x = new [] [] {'? –

+1

Tanti tasti inutili ... Basta scrivere come 'double [] [] x = {nuovo [] {1d, 2}, nuovo [] {3,4.3}};';) – Guffa

+1

@Robert Harvey, davvero gentile di strano ma no. –

4

Questo dovrebbe funzionare:

double[][] a = new double[][] 
{ 
    new double[] {1.0d, 2.0d}, 
    new double[] {3.0d, 4.0d} 
}; 
+0

Sembra che manchi un "{" da qualche parte nell'esempio. – cyberzed

+0

manca un ** {** dopo [2] [] – ntziolis

+0

@ntziolis: si trova sulla riga seguente. –

3

Come avete un array di array, è necessario creare l'ARRA oggetti y suo interno anche:

double[][] a = new double[][] { 
    new double[] { 1, 2 }, 
    new double[] { 3, 4 } 
}; 
2
double[][] a = new double[][] { 
    new double[] {1.0, 1.0}, 
    new double[] {1.0, 1.0} 
}; 
0

Non so se ho ragione riguardo a questo, ma ho usato le cosiddette Structures in VB.net e mi sono chiesto come questo concetto è visto in C#. E 'relative a questa domanda in questo modo:

' The declaration part 
Public Structure driveInfo 
    Public type As String 
    Public size As Long 
End Structure 
Public Structure systemInfo 
    Public cPU As String 
    Public memory As Long 
    Public diskDrives() As driveInfo 
    Public purchaseDate As Date 
End Structure 

' this is the implementation part 
Dim allSystems(100) As systemInfo 
ReDim allSystems(1).diskDrives(3) 
allSystems(1).diskDrives(0).type = "Floppy" 

Vedi quanto elegante tutto questo è, e di gran lunga migliore per l'accesso degli array frastagliati. Come tutto questo può essere fatto in C# (forse strutture?)