Principales respuestas
Cómo crear un array sin especificar tamaño

Pregunta
-
Respuestas
-
"ASSaulting-T-E" preguntó:
> Lo que necesito es poder crear un array vacío ...
Hola:
Si tu intención es declarar un array que esté vacío (con 0 elementos) pero que su valor no sea Nothing, entonces decláralo de alguna de éstas maneras:
- Versión "larga" correspondiente al marco de trabajo de .net:
Dim array As String() = New String() {}
- Versión "corta" exclusiva de Visual Basic .net:
Dim array(-1) As String
Si consultas el valor de su propiedad Length obtendrás de valor 0 elementos.
> ... y poder rellenarlo de datos y que éste vaya aumentando el valor del índice
Aquí puedes utilizar la instrucción ReDim:
ReDim array(2) ' Redimensionamos el array con tres elementos array(0) = "Elemento 1" array(1) = "Elemento 2" array(2) = "Elemento 3"
o si lo prefieres, puedes olvidarte de la instrucción ReDim y añadir los elementos utilizando la siguiente sintaxis:
array = {"Elemento1", "Elemento2", "Elemento3"}
Si ahora vuelves a consultar el valor de su propiedad Length, obtendrás 3 elementos. Te recuerdo que en Visual Basic .NET los índices de las matrices, como los de cualquier otra colección, están en base cero, lo que significa que su primer elemento es el cero, el segundo el 1, el tercero el 2, etc., y el último el valor de la propiedad Length - 1.
Pero si añades los elementos tanto con ReDim como de la segunda manera indicada, se sobrescribirán los valores que pudieras tener anteriormente en el array. Si tu intención es conservar los valores existentes y añadir nuevos elementos, entonces vas a tener que utilizar la instrucción ReDim Preserve ANTES de añadir dinámicamente un nuevo elemento a la matriz:
' Añadimos otros elemento conservando los anteriores. ReDim Preserve array(array.Length) array(array.Length - 1) = "Elemento 4" ReDim Preserve array(array.Length) array(array.Length - 1) = "Elemento 5" ReDim Preserve array(array.Length) array(array.Length - 1) = "Elemento 6"
Un saludo
Enrique Martínez Montejo
[MS MVP - VB]
Nota informativa: La información contenida en este mensaje, así como el código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o sugerido en el presente mensaje.
Si esta respuesta le ha resultado útil, recuerde marcarla como satisfactoria.
Si usas Visual Basic .NET y deseas ser productivo y feliz, se inteligente y activa la instrucción Option Strict.
- Editado Enrique M. MontejoModerator viernes, 13 de noviembre de 2015 19:34
- Marcado como respuesta ASSaulting-T-E viernes, 13 de noviembre de 2015 22:36
Todas las respuestas
-
Hola
En visual basic esta el redim.
https://msdn.microsoft.com/en-us/library/w8k3cys2.aspx
Dim A() As Integer ReDim A(2) A(1) = 3
Otra alternativa es que uses List
Dim lista as New List<Integer> lista.add(1); lista.add(2);
Saludos -
-
Al array como tal, siempre tienes que indicar el tamaño, en tu caso si no quieres especificar el tamaño, usa un List.
Si despues necesitas manejar ese list como array, tienen un metodo ToArray()
Saludos
- Editado Norberto Agustin viernes, 13 de noviembre de 2015 18:24
-
"ASSaulting-T-E" preguntó:
> Lo que necesito es poder crear un array vacío ...
Hola:
Si tu intención es declarar un array que esté vacío (con 0 elementos) pero que su valor no sea Nothing, entonces decláralo de alguna de éstas maneras:
- Versión "larga" correspondiente al marco de trabajo de .net:
Dim array As String() = New String() {}
- Versión "corta" exclusiva de Visual Basic .net:
Dim array(-1) As String
Si consultas el valor de su propiedad Length obtendrás de valor 0 elementos.
> ... y poder rellenarlo de datos y que éste vaya aumentando el valor del índice
Aquí puedes utilizar la instrucción ReDim:
ReDim array(2) ' Redimensionamos el array con tres elementos array(0) = "Elemento 1" array(1) = "Elemento 2" array(2) = "Elemento 3"
o si lo prefieres, puedes olvidarte de la instrucción ReDim y añadir los elementos utilizando la siguiente sintaxis:
array = {"Elemento1", "Elemento2", "Elemento3"}
Si ahora vuelves a consultar el valor de su propiedad Length, obtendrás 3 elementos. Te recuerdo que en Visual Basic .NET los índices de las matrices, como los de cualquier otra colección, están en base cero, lo que significa que su primer elemento es el cero, el segundo el 1, el tercero el 2, etc., y el último el valor de la propiedad Length - 1.
Pero si añades los elementos tanto con ReDim como de la segunda manera indicada, se sobrescribirán los valores que pudieras tener anteriormente en el array. Si tu intención es conservar los valores existentes y añadir nuevos elementos, entonces vas a tener que utilizar la instrucción ReDim Preserve ANTES de añadir dinámicamente un nuevo elemento a la matriz:
' Añadimos otros elemento conservando los anteriores. ReDim Preserve array(array.Length) array(array.Length - 1) = "Elemento 4" ReDim Preserve array(array.Length) array(array.Length - 1) = "Elemento 5" ReDim Preserve array(array.Length) array(array.Length - 1) = "Elemento 6"
Un saludo
Enrique Martínez Montejo
[MS MVP - VB]
Nota informativa: La información contenida en este mensaje, así como el código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o sugerido en el presente mensaje.
Si esta respuesta le ha resultado útil, recuerde marcarla como satisfactoria.
Si usas Visual Basic .NET y deseas ser productivo y feliz, se inteligente y activa la instrucción Option Strict.
- Editado Enrique M. MontejoModerator viernes, 13 de noviembre de 2015 19:34
- Marcado como respuesta ASSaulting-T-E viernes, 13 de noviembre de 2015 22:36
-