Matrices

19/05/2005 - 11:45 por yego | Informe spam
Hola a todos de nuevo.
En esta ocasión estoy tratando con matrices dinamicas. Antes con VB era
bastante sencillo el trabajar con matrices dinamicas, pero ahora con C# me
he encontrado que no pueden ser dinamicas, ya que cada vez que aumento las
dimensiones de mi matriz, todos los datos de esta se inicializan al tipo de
datos que almacene.

Estoy haciendo algo mal, ¿verdad?
Saludos.

Preguntas similare

Leer las respuestas

#1 Octavio Hernandez
19/05/2005 - 15:12 | Informe spam
Yego,

Cuando dices "aumento las dimensiones de mi matriz" realmente lo que estás
haciendo es crear una MATRIZ NUEVA (new) con las nuevas dimensiones, ¿no?.
El tamaño de una matriz es INMUTABLE una vez que la haz creado. Para
"ampliar" una matriz lo que hay que hacer es:
a) Crear una nueva con las nuevas dimensiones deseadas.
b) Copiar los datos de la matriz vieja a la nueva utilizando Array.Copy() u
otro de efecto método similar.

Slds - Octavio

"yego" escribió en el mensaje
news:
Hola a todos de nuevo.
En esta ocasión estoy tratando con matrices dinamicas. Antes con VB era
bastante sencillo el trabajar con matrices dinamicas, pero ahora con C# me
he encontrado que no pueden ser dinamicas, ya que cada vez que aumento las
dimensiones de mi matriz, todos los datos de esta se inicializan al tipo
de
datos que almacene.

Estoy haciendo algo mal, ¿verdad?
Saludos.


Respuesta Responder a este mensaje
#2 yego
19/05/2005 - 15:39 | Informe spam
Muchas gracias.
Estoy acostumbrado a programar en VB y este lenguaje soporta la instrucción
'REDIM', con la que puedes ampliar o disminuir de forma dinámica una matriz.
Conjuntamente a esta instrucción puedes decir que guarde los datos con
PRESERVE, así no pierdes los datos que anteriormente introdujiste.
Creí que esto lo habrian incluido en C#

Muchas gracias de nuevo.
"Octavio Hernandez" escribió en el mensaje
news:%
Yego,

Cuando dices "aumento las dimensiones de mi matriz" realmente lo que estás
haciendo es crear una MATRIZ NUEVA (new) con las nuevas dimensiones, ¿no?.
El tamaño de una matriz es INMUTABLE una vez que la haz creado. Para
"ampliar" una matriz lo que hay que hacer es:
a) Crear una nueva con las nuevas dimensiones deseadas.
b) Copiar los datos de la matriz vieja a la nueva utilizando Array.Copy()


u
otro de efecto método similar.

Slds - Octavio

"yego" escribió en el mensaje
news:
> Hola a todos de nuevo.
> En esta ocasión estoy tratando con matrices dinamicas. Antes con VB era
> bastante sencillo el trabajar con matrices dinamicas, pero ahora con C#


me
> he encontrado que no pueden ser dinamicas, ya que cada vez que aumento


las
> dimensiones de mi matriz, todos los datos de esta se inicializan al tipo
> de
> datos que almacene.
>
> Estoy haciendo algo mal, ¿verdad?
> Saludos.
>
>


Respuesta Responder a este mensaje
#3 Eduardo A. Morcillo [MS MVP VB]
19/05/2005 - 18:07 | Informe spam
Si necesitas un array dinamico podrias usar ArrayList. Internamente esta
clase usa un array para almacenar los elementos y si se queda sin espacio
hace automaticamente lo que yego dice, sin que uno se de cuenta. Lo unico
malo es que trabaja solo con Object, lo que no es muy practico si se van a
almacenar tipos por valor.

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo
Respuesta Responder a este mensaje
#4 Tristan
19/05/2005 - 19:07 | Informe spam
Pero en realidad yego, a parte de escribir dos lineas en lugar de una, no
hay demasiada diferencia entre el redim con preserve y lo que te ha dicho
Octavio. De hecho, imagino que es lo que VB hará algo distinto internamente.
Podrías crear tu mismo un método Redim englobando esos dos pasos.

Además tienes otras colecciones como ArrayList que permiten crecer
dinámicamente. Puedes crear tu propia colección derivando de CollectionBase.

Juan Carlos Badiola
MVP - C#
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida