Alguien podría decirme cual es la diferencia entre estas tres declaraciones:
Function MiFuncion(Parametro As String)
Function MiFuncion(ByVal Parametro As String)
Function MiFuncion(ByRef Parametro As String)
| ||||
![]() Alguien podría decirme cual es la diferencia entre estas tres declaraciones: Function MiFuncion(Parametro As String) Function MiFuncion(ByVal Parametro As String) Function MiFuncion(ByRef Parametro As String)
__________________ Por favor, antes de preguntar, revisa la Guía para realizar preguntas. |
| |||
Sin nada en VB es ByRef, aunque debería ser ByVal como en los demás lenguajes. ByVal es "por valor". Tú pasas un número, y el número se copia y se usa en la función. Si modificas el número, lo harás en la función. ByRef es "por referencia". Las referencias son instancias de la misma variable. Es como la misma variable usada en muchos lugares. Por tanto si la modificas en la función, lo harás en el resto del programa. |
| |||
Respuesta: Diferencia ByVal, ByRef... Que interesante, realmente no sabia en que en visual basic los valores entraban por referencia por defecto... hmm esto me parece... inadecuado, porque puede producir errores... yo opino que el ambito de una funcion deberia mantenerse mas hermetico. |
| |||
Respuesta: Diferencia ByVal, ByRef... aqui tienes dos ejemplos q me han ayudado a mi: Código de ejemplo ByVal Private Sub Command1_Click() Dim Un_Valor As Long Un_Valor = 100 'Se envía la variable por Valor ( ByVal ) Call Sumar(Un_Valor) 'Muestra el valor que es 100, ( no se modificó en la función Sumar ) MsgBox Un_Valor End Sub Sub Sumar(ByVal Valor As Long) 'Modifica la variable Valor = Valor + 100 End Sub Código ByRef Private Sub Command1_Click() Dim Un_Valor As Long Un_Valor = 100 'Se envía la variable por Referencia ( ByRef ) con el valor 100 Call Sumar(Un_Valor) 'Muestra el valor que ahora es 200, ( ya que se modificó en la Sub Sumar) MsgBox Un_Valor End Sub Sub Sumar(ByRef Valor As Long) 'Modifica la variable Valor = Valor + 100 End Sub p.d. como bien dijo MaxExtreme Function MiFuncion(Parametro As String) es igual a Function MiFuncion(ByRef Parametro As String) |
| ||||
![]() ¿Se han fijado que el tema es de hace 3 años y medio? ![]()
__________________ Por favor, antes de preguntar, revisa la Guía para realizar preguntas. |