none
Pasar un ArrayList como parámetro a una función (y como recibirlo en la misma) RRS feed

  • Pregunta

  • Hola, tengo un ArrayList que quiero pasar como parámetro a una función.

    Lo defino así: Dim myArray As New ArrayList

    y lo cargo en un bucle con myArray.Add("...")

    Lo paso a la función de esta manera: myFunction(myArray, otroValor)

    Y lo recibo en la función como: Function myFunction(ByVal elArray() As String, ByVal otroDato As String)

    Pero recibo el error: Un valor de tipo 'System.Collections.ArrayList' no se puede convertir en '1-matriz dimensional de String'.

    Estoy errando en la forma en que lo paso a la función o en la forma en que lo recibo en la misma?

    Gracias por la ayuda!



    jueves, 7 de julio de 2016 11:42

Respuestas

  • "sergiobotta" escribió:

    > tengo un ArrayList que quiero pasar como parámetro a una función.
    >
    > Lo defino así: Dim myArray As New ArrayList
    >
    > Lo paso a la función de esta manera: myFunction(myArray, otroValor)
    >
    > Y lo recibo en la función como:
    >    Function myFunction(ByVal elArray() As String, ByVal otroDato As String)
    >
    > Pero recibo el error: Un valor de tipo 'System.Collections.ArrayList' no se
    > puede convertir en '1-matriz dimensional de String'.
    >
    > Estoy errando en la forma en que lo paso a la función o en la forma en que lo recibo en la misma?

    En la forma en que lo pasas, porque tal y como tienes definida la función, ésta espera que su primer parámetro sea una matriz de valores alfanuméricos, que nada tiene que ver con un objeto ArrayList.

    Si tu intención es pasarle a la función el objeto ArrayList, define el primer parámetro de la función con el tipo ArrayList:

       
    Function myFunction(ByVal elArray As ArrayList, ByVal otroDato As String) As TipoValorDevuelto

    O si lo prefieres, y dado que la clase ArrayList implementa la interfaz IEnumerable, también puedes definir el primer parámetro con el tipo de dato IEnumerable:

    Function myFunction(ByVal elArray As IEnumerable, ByVal otroDato As String) As TipoValorDevuelto

    Un saludo


    Enrique Martínez Montejo
    [MS MVP - Visual Studio y Tecnologías de Desarrollo]

    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.


    jueves, 7 de julio de 2016 12:11
    Moderador

Todas las respuestas

  • "sergiobotta" escribió:

    > tengo un ArrayList que quiero pasar como parámetro a una función.
    >
    > Lo defino así: Dim myArray As New ArrayList
    >
    > Lo paso a la función de esta manera: myFunction(myArray, otroValor)
    >
    > Y lo recibo en la función como:
    >    Function myFunction(ByVal elArray() As String, ByVal otroDato As String)
    >
    > Pero recibo el error: Un valor de tipo 'System.Collections.ArrayList' no se
    > puede convertir en '1-matriz dimensional de String'.
    >
    > Estoy errando en la forma en que lo paso a la función o en la forma en que lo recibo en la misma?

    En la forma en que lo pasas, porque tal y como tienes definida la función, ésta espera que su primer parámetro sea una matriz de valores alfanuméricos, que nada tiene que ver con un objeto ArrayList.

    Si tu intención es pasarle a la función el objeto ArrayList, define el primer parámetro de la función con el tipo ArrayList:

       
    Function myFunction(ByVal elArray As ArrayList, ByVal otroDato As String) As TipoValorDevuelto

    O si lo prefieres, y dado que la clase ArrayList implementa la interfaz IEnumerable, también puedes definir el primer parámetro con el tipo de dato IEnumerable:

    Function myFunction(ByVal elArray As IEnumerable, ByVal otroDato As String) As TipoValorDevuelto

    Un saludo


    Enrique Martínez Montejo
    [MS MVP - Visual Studio y Tecnologías de Desarrollo]

    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.


    jueves, 7 de julio de 2016 12:11
    Moderador
  • Muchas gracias Enrique! Saludos.
    jueves, 7 de julio de 2016 13:08
  • Muchas gracias! Muy amables todos!
    jueves, 7 de julio de 2016 13:09