2011-07-17 30 views
8

Quiero crear una matriz bidimensional, sin conocer el tamaño de la primera dimensión.¿Cómo puedo crear una matriz de longitud dinámica bidimensional?

Por ejemplo, tengo un número desconocido de filas cuando creo una matriz. Cada fila representa una cuenta. salida 4 columnas para cada fila: identificación, nombre, usuario, contraseña

he intentado con matriz escalonada pero no es posible tener:

int[][] jaggedArray = new int[][3]; 

También busqué ArrayList, aplicación con clases y una poco sobre Generics.

estoy en busca de una solución que pueda permitir una fácil manipulación de los datos como:

  • añadir a la lista, seleccione los elementos de entrada,
  • utilizando elementos de base de datos de consultas
  • utilizando como parámetros en otra
  • funciones

Porque soy un novato en .NET (C#) por favor me ofrecen soluciones de código, en lugar de genéricos (buscar) soluciones

Respuesta

2

No existen las matrices de longitud dinámica en .NET. Use un List<> en su lugar.

Los límites de la matriz deben conocerse al crear una instancia de una matriz. Lo que puede haberte confundido es que esto parece ser diferente para las matrices dentadas, pero no lo es: dado que es una matriz de matrices, cuando la instancias será una matriz de matrices no instaladas (por ejemplo, null referencias). Luego necesita asignar cada una de esas matrices de nuevo para usarlas.

17

OMI, ya que se fijan las "columnas", declarar una clase para la que:

public class Account 
{ 
    public int ID {get;set;} 
    public string Name {get;set;} 
    public string User {get;set;} 
    public string Password {get;set;} // you meant salted hash, right? ;p 
} 

ahora tienen una:

List<Account> list = new List<Account>(); 

esto tiene todo lo que necesita:

agregar a la lista, seleccionar, ingresar elementos

list.Add etc

utilizando elementos en la base de datos y consulta del utilizando como parámetros en otras funciones

vaga sin más información, pero se puede pasar a cualquiera de los Account o invidual valores, o toda la lista.

+0

gracias. Tengo otra pregunta: ¿cómo recupero los valores de los miembros de la clase para un elemento específico de la lista? – user848568

+2

@user te refieres a 'list [0] .Name'? –

+0

Mi caso tiene una pequeña diferencia. Ambas filas y columnas no son conocidas. ¿Cómo puedo lograr el mismo resultado para 'Arrays 2-D'? – barnes

0

Por lo que sé, no podemos crear instancias de matriz sin saber su tamaño. ¿Por qué no pruebas un Array of List? De esta manera:

List<int>[] a = new List<int>[yourDesireColumnNumber]; 

Con Lista, agregar, seleccionar, elementos de entrada es trivial. Si desea asignarlo como parámetro en otras funciones, simplemente defina Tipo.

+0

¿No te refieres a una lista de arreglos internos fijos, no a una matriz fija de listas de int? –

+3

@Scrum es correcto - si elige este enfoque (y no lo haría; p) sería una 'Lista ', no una 'Lista []' –

+0

Debe probarlo antes de juzgarlo. Es una matriz de lista . Por cierto, el enfoque de Marc es genial. ;) Aprendo de eso. –

Cuestiones relacionadas