2010-04-30 25 views
7
  • Necesito saber cómo inicializar matriz de matrices en C# ..
  • Sé que existen matriz multidimensional, pero creo que no necesito que en mi caso! He intentado este código ... pero no he podido saber cómo inicializar con la lista de inicializadores ...matriz de matrices en C#

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

Gracias

PS: Si usted se pregunta por qué lo uso: Necesito estructura de datos que cuando llamo obj [0] se devuelve una matriz .. Sé que es extraño ..

Gracias

Respuesta

5

Que yo sepa, la forma más simple y pulsación efectiva está presente para inicializar una matriz escalonada es:

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

Editar:

En realidad funciona este también:

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

¿No sería el primero' doble [] [] x = new [] [] {'? –

+1

Tantas teclas innecesarias ... Simplemente escríbelas como 'double [] [] x = {new [] {1d, 2}, new [] {3,4.3}};';) – Guffa

+1

@Robert Harvey, realmente amable de extraño pero no –

4

Esto debería funcionar:

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

Parece que le falta un "{" en algún lugar del ejemplo. – cyberzed

+0

falta un ** {** después del [2] [] – ntziolis

+0

@ntziolis: se encuentra en la siguiente línea. –

3

Como usted tiene una matriz de matrices, hay que crear el arra objetos Y dentro de él también:

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

No sé si tengo razón sobre esto, pero he estado utilizando las llamadas Estructuras en VB.net, y me pregunto cómo se ve este concepto en C#. Es relevante a esta pregunta de esta manera:

' 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" 

Ver lo elegante que es todo esto, y mucho mejor que el acceso de las matrices dentadas. ¿Cómo se puede hacer todo esto en C# (¿quizás en las estructuras?)