none
¿Como Saber si Un Array esta vacio?

    Pregunta

  • Estimado, muchas bendiciones a ti.

    Bueno, como dice el titulo tengo esa duda, como saber si una array esta vacio.

    me explico, tengo esto.

    Dim arrDato1 as String()
    Dim arrDato2 as String()

    y quiero asignarle valores de forma dinámica al array 1 por que no se cuantos datos son.

    'Pregunto si el array 1 tiene algun valor 
    If arrDato1.GetLength(0) = 0 then
        ReDim arrDato1(0)
        arrDato1(0) = "Primero"
    Else
        ReDim Preserve arrDato1(arrDato1.GetLEngth(0) + 1)
         arrDato1(arrDato1.GetLEngth(0) + 1) = "El que sigue"
    End If
    

    Esto lo hago dentro de un siclo.

    Pero me muestra una excepción en  If arrDato1.GetLength(0) = 0 then.

    He Buscado como determinar si el array esta null o empy y no doy con el método.

    Existe alguna forma para determinar si un array tiene algún valor o no

    Espero me puedas ayudar, Gracias.

    sábado, 21 de enero de 2017 20:18

Respuestas

  • Negochile,

    ¿Obtienes la excepción 'NullReferenceException'?

    Pues tal y como tienes el código que presentas es de esperar la excepción porque no has definido un tamaño para el array, el valor de la variable arrDato1 es Nothing por tanto el miembro GetLength() no puede ser accedido.

    Dim arrDato1() As Integer
    
    If arrDato1 Is Nothing Then
    	'El array no tiene elementos
    Else
    	MessageBox.Show(arrDato1.GetLength(0))
    End If

    Sin embargo, si necesitas hacer uso de una colección donde el número de elementos se desconoce a priori (dinámico), entonces te recomiendo que utilices listas (List<T>), de hecho todo el trabajo que intentas hacer para redimensionar el array ya lo hace el marco de trabajo por ti:

    Dim Datos As New List(Of Integer)
    
    'Agregar un valor
    Datos.Add(99)
    
    'Agregar varios valores
    Datos.AddRange(New Integer() {1, 2, 3, 4, 5})
    
    'Eliminar un elemento de la lista
    Datos.RemoveAt(5) 'El quinto elemento
    
    'Conocer la cantidad de elementos de la lista
    MessageBox.Show(Datos.Count) '5 elementos, uno fue borrado en la instrucción anterior
    
    'Recorrer por los elementos de la lista
    For Each item As Integer In Datos
    	MessageBox.Show(item.ToString) ' 99, 1, 2, 3, 4
    Next


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    • Marcado como respuesta Negochile sábado, 21 de enero de 2017 21:47
    sábado, 21 de enero de 2017 21:14

Todas las respuestas

  • usa:

    arrDato1.Length()


    Saludos.

    www.soydesarrollador.net

    sábado, 21 de enero de 2017 21:13
  • Negochile,

    ¿Obtienes la excepción 'NullReferenceException'?

    Pues tal y como tienes el código que presentas es de esperar la excepción porque no has definido un tamaño para el array, el valor de la variable arrDato1 es Nothing por tanto el miembro GetLength() no puede ser accedido.

    Dim arrDato1() As Integer
    
    If arrDato1 Is Nothing Then
    	'El array no tiene elementos
    Else
    	MessageBox.Show(arrDato1.GetLength(0))
    End If

    Sin embargo, si necesitas hacer uso de una colección donde el número de elementos se desconoce a priori (dinámico), entonces te recomiendo que utilices listas (List<T>), de hecho todo el trabajo que intentas hacer para redimensionar el array ya lo hace el marco de trabajo por ti:

    Dim Datos As New List(Of Integer)
    
    'Agregar un valor
    Datos.Add(99)
    
    'Agregar varios valores
    Datos.AddRange(New Integer() {1, 2, 3, 4, 5})
    
    'Eliminar un elemento de la lista
    Datos.RemoveAt(5) 'El quinto elemento
    
    'Conocer la cantidad de elementos de la lista
    MessageBox.Show(Datos.Count) '5 elementos, uno fue borrado en la instrucción anterior
    
    'Recorrer por los elementos de la lista
    For Each item As Integer In Datos
    	MessageBox.Show(item.ToString) ' 99, 1, 2, 3, 4
    Next


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    • Marcado como respuesta Negochile sábado, 21 de enero de 2017 21:47
    sábado, 21 de enero de 2017 21:14
  • Williams, Muchas bendiciones estimado...

    Gracias por tu información de hecho la primera ves que prove el código me arrojo la execpcion y como decía busque la manera de saber si el array estaba vacio y no encontraba nada.

    Pero muchas gracias por recordarme el Is Nothing, no se me ocurrio eso.

    Otra ves el bosque no me dejaba ver el árbol... jajaja muchas gracias estimado.

    Nota: Cuando tu votas la respuesta se puede poner mas que 1 o no?

    sábado, 21 de enero de 2017 21:56
  • Negochile,

    Un usuario sólo puede otorgar un punto por cada respuesta del post, los puntos en una respuesta representan la cantidad de usuarios que están de acuerdo con la propuesta porque les parece interesante o porque de alguna manera sirve para resolver el problema en curso.

    sábado, 21 de enero de 2017 23:12
  • usa:

    arrDato1.Length()


    Saludos.

    www.soydesarrollador.net

    Estimado Edward,

    Nota en el ejemplo adjunto que el array ha sido creado mas no ha sido inicializado, por tanto la variable arrDato1 es Nothing y siendo Nothing no es posible acceder al valor de ninguna de sus propiedades. 

    sábado, 21 de enero de 2017 23:36