none
¿Los objetos pasados como parámetros no requieren ser declarados como ByRef? RRS feed

  • Pregunta

  • Entiendo que lo que se pasa es en realidad la dirección de memoria del objeto y si alteramos su valor dentro de un método, función o procedimiento este conserva su valor, por tanto no tiene sentido declarar un parámetro de objeto como ByRef, ¿es correcto?
    martes, 14 de mayo de 2019 0:03

Respuestas

  • Hola

    si usas ByRef el valor de la variable cambia dentro de la rutina

    si usas ByVal el valor se conserva fuera de la rutina

    checa este ejemplo

    Module Module1
        Sub Main()
            Dim value As Integer = 1
    ByVal.
            Example1(value)
            Console.WriteLine(value)
    
            
            Example2(value)
            Console.WriteLine(value)
        End Sub
    
        Sub Example1(ByVal test As Integer)
            test = 10
        End Sub
    
        Sub Example2(ByRef test As Integer)
            test = 10
        End Sub
    End Module
    
    'Output
    
    1
    10

    martes, 14 de mayo de 2019 1:05

Todas las respuestas

  • Hola

    si usas ByRef el valor de la variable cambia dentro de la rutina

    si usas ByVal el valor se conserva fuera de la rutina

    checa este ejemplo

    Module Module1
        Sub Main()
            Dim value As Integer = 1
    ByVal.
            Example1(value)
            Console.WriteLine(value)
    
            
            Example2(value)
            Console.WriteLine(value)
        End Sub
    
        Sub Example1(ByVal test As Integer)
            test = 10
        End Sub
    
        Sub Example2(ByRef test As Integer)
            test = 10
        End Sub
    End Module
    
    'Output
    
    1
    10

    martes, 14 de mayo de 2019 1:05
  • Gracias, pero creo que no se entendió lo que consultaba, eso ocurre con variables, pero me parece que no ocurre con objetos porque entiendo que cuando se pasa un objetos lo que se pasa en realidad es una referencia, salvo mejor explicación.

    martes, 14 de mayo de 2019 1:14
  • Hola

    en las variables como en los objetos pasa lo mismo los objetos son variables

    también puedes pasar controles

    • Propuesto como respuesta Carlos_Ruiz_M martes, 21 de mayo de 2019 17:31
    martes, 14 de mayo de 2019 1:40
  • Hola 

    Debido a que no hemos recibido alguna notificación que aún se esté presentando el problema que enuncias en tu consulta  y que la respuesta provista provee un amplio panorama y campo de acción sobre tu duda; vamos a considerar tu duda como resuelta debido a la respuesta apropiada proporcionada  y así proceder a calificar las misma como respuesta.

    No dudes en ampliar más sobre este tema si es que aún lo requirieras o de abrir una nueva consulta en caso de tener alguna situación o necesitarla con algún otro de los productos de Microsoft.

    Gracias por usar los foros de MSDN.

    Tonatiuh Abrego
     ____

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde. 

    Microsoft ofrece este servicio de forma gratuita, con la finalidad de ayudar a los usuarios y la ampliación de la base de datos de conocimientos relacionados con los productos y tecnologías de Microsoft. 
    Este contenido es proporcionado "tal cual" y no implica ninguna responsabilidad de parte de Microsoft.
    miércoles, 22 de mayo de 2019 21:23
    Moderador