none
Cómo crear un array sin especificar tamaño RRS feed

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.


    viernes, 13 de noviembre de 2015 19:10
    Moderador

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

    viernes, 13 de noviembre de 2015 18:14
  • Pero tengo que especificarlo después igualmente, ¿no hay otra alternativa?
    viernes, 13 de noviembre de 2015 18:19
  • 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


    viernes, 13 de noviembre de 2015 18:23
  • "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.


    viernes, 13 de noviembre de 2015 19:10
    Moderador
  • Gracias por tu respuesta tan completa, me sirvió a la perfección.
    viernes, 13 de noviembre de 2015 22:37