una sencilla y tonta pregunta del ByVal

Iniciado por ricardovinzo, 29 Junio 2008, 04:34 AM

0 Miembros y 1 Visitante están viendo este tema.

ricardovinzo

tengo esta duda e estado leyendo sobre ByVal ByRef, pero no entiendo osea no entiendo no creo que is pero no me queda claro lo que realmente hace el ByVal?
hace por ejemplo que cuando le pase un daot a un argumento y el argumento tenga el ByVal los datos no puedan ser cambiados y alguien me daria un corto ejemplo?

si no es molestia! :P

Gracias
3# Convocacion de Moderadores en Code Makers, entra!

seba123neo

La característica extraordinaria de las leyes de la física es que se aplican en todos lados, sea que tú elijas o no creer en ellas. Lo bueno de las ciencias es que siempre tienen la verdad, quieras creerla o no.

Neil deGrasse Tyson

cassiani

Pero si tu mismo lo dices, utilizas ByVal para pasar un obeto como valor y ByRef para pasarlo como referencia

mira este ejemplo:

Código (vb) [Seleccionar]

Private Sub Form_Load()
    I = 3
    MsgBox "Valor Inicial de I --> " & I
   
    MsgBox MsnByRef(I) 'Pasandolo como referencia
    'MsgBox MsnByVal(I) 'Pasandolo como valor
   
    MsgBox "Valor final de I --> " & I
End Sub

Private Function MsnByRef(ByRef A As Byte) As Byte
    A = A + 3
    MsnByRef = A
End Function

Private Function MsnByVal(ByVal A As Byte) As Byte
    A = A + 3
    MsnByVal = A
End Function


Cuando lo pasas como referenca afectas a ese objeto desde la rutina, eso quiere decir, que si I valia 3, será afectada, aumentando su valor. Con ByVal eso NO sucede.

Serás tu de acuerdo a lo que quieras hacer, quien decida cual usar, pero es buena costumbre especificar como se le pasa el parametro a la rutina.







SKL (orignal)

Cita de: cΔssiΔnі en 29 Junio 2008, 05:06 AM
Pero si tu mismo lo dices, utilizas ByVal para pasar un obeto como valor y ByRef para pasarlo como referencia

mira este ejemplo:

Código (vb) [Seleccionar]

Private Sub Form_Load()
    I = 3
    MsgBox "Valor Inicial de I --> " & I
   
    MsgBox MsnByRef(I) 'Pasandolo como referencia
    'MsgBox MsnByVal(I) 'Pasandolo como valor
   
    MsgBox "Valor final de I --> " & I
End Sub

Private Function MsnByRef(ByRef A As Byte) As Byte
    A = A + 3
    MsnByRef = A
End Function

Private Function MsnByVal(ByVal A As Byte) As Byte
    A = A + 3
    MsnByVal = A
End Function


Cuando lo pasas como referenca afectas a ese objeto desde la rutina, eso quiere decir, que si I valia 3, será afectada, aumentando su valor. Con ByVal eso NO sucede.

Serás tu de acuerdo a lo que quieras hacer, quien decida cual usar, pero es buena costumbre especificar como se le pasa el parametro a la rutina.

por favor declara las variables!

cassiani

Para un ejemplo como este no hace falta, eso se sobre entiende, yo acostumbro a usar el "Option Explicit" así que te imaginaras que siempre declaro...

juancho77

Usen delphi/pascal y puaaaa leesto!!!!¡¡¡