Test Foro de elhacker.net SMF 2.1

Programación => .NET (C#, VB.NET, ASP) => Programación General => Programación Visual Basic => Mensaje iniciado por: ricardovinzo en 29 Junio 2008, 04:34 AM

Título: una sencilla y tonta pregunta del ByVal
Publicado por: ricardovinzo en 29 Junio 2008, 04:34 AM
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
Título: Re: una sencilla y tonta pregunta del ByVal
Publicado por: seba123neo en 29 Junio 2008, 04:43 AM
google no muerde:

http://www.google.com.ar/search?q=byval&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:es-ES:official&client=firefox-a (http://www.google.com.ar/search?q=byval&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:es-ES:official&client=firefox-a)

saludos.
Título: Re: una sencilla y tonta pregunta del ByVal
Publicado por: cassiani 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.






Título: Re: una sencilla y tonta pregunta del ByVal
Publicado por: SKL (orignal) en 29 Junio 2008, 05:20 AM
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!
Título: Re: una sencilla y tonta pregunta del ByVal
Publicado por: cassiani en 29 Junio 2008, 15:44 PM
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...
Título: Re: una sencilla y tonta pregunta del ByVal
Publicado por: juancho77 en 30 Junio 2008, 06:10 AM
Usen delphi/pascal y puaaaa leesto!!!!¡¡¡