en la llamada a la funcion tengo una variable K tipo defdatDatos donde
esta clase tiene un dato ID que cuando llamo a GrabaDatos va con 0 (cero)
Internamente se calcula un nuevo ID y se lo asigna al nombre local de la
funcion GrabaDatos... cuando vuelve de la llamada k.id TIENE EL VALOR
QUE MODIFIQUE en GrabaDatos!!!!!!!!!!!1
Como si fuera que esta como byref.....
Utilizo visual basic .net 2008
Ya revis� todo.... no se que hacer....
igual lo puedo solucionar... es mas.... es el comportamiento que deseo y
justamente cuando voy a la funci�n para ver/ponerle el byref veo que
esta con byval pero se comporta como byref
Hugo
Lo que acabas de llamar "estructura defdatDatos", en realidad lo tienes
definido como una Clase, y no como una estructura, �verdad?
En ese caso, se compila como un objeto tipo-referencia, no como un
objeto tipo-valor. Eso significa que tu "variable" no tiene los datos, sino
una referencia al lugar donde realmente se encuentran los datos (el "heap").
Cuando una variable tipo-referencia la pasas con ByVal, lo que pasas es
el "valor de la referencia" (y si pones ByRef se pasa una "referencia a la
referencia"). En otras palabras, el ByVal pasa una copia del valor de la
variable, que es una copia del puntero que apunta al area de datos. Si
cambias los datos a trav�s de la copia del puntero, queda cambiada la �nica
copia de esos datos que exist�a en memoria (en el heap), y por tanto se ven
cambiados esos datos a trav�s del puntero original (cuya copia pasaste con
ByVal).
Lo �nico que hace el ByVal es que si cambias el propio puntero dentro de
la subrutina (haciendolo apuntar a otro sitio), entonces no se ve afectado
el puntero original que pasaste, que seguir�a apuntando al mismo sitio.
Hugo
El 08/11/2009 14:59, Alberto Poblacion escribi�: