CLR: .Net / Mono / Boo / Otros CLR > C#

 Se Puede Pasar Un Objeto Por Valor?

(1/2) > >>

sakuragi:
hola que tal.

se puede pasar un objeto por valor de alguna forma?

saludos

gracias

 :comp:

JuanK:
no que yo sepa...
para que?

Güorker:
Hola,

Segun lo que he encontrado en la biblioteca de MSDN, por defecto los parametros de un método se pasan por valor, es decir que el método no cambia el valor original del parametro pasado:


--- Citar ---If a parameter is declared for a method without ref or out, the parameter can have a value associated with it. That value can be changed in the method, but the changed value will not be retained when control passes back to the calling procedure. By using a method parameter keyword, you can change this behavior.


--- Fin de la cita ---

Fuente

Saludos

JuanK:
cuando se habla de pasar un objeto por valor se habla de que el procedimeinto crea un objeto nuevo con base al parametro.

En .NET los objetos que son instancias de clase ( la gran mayoria, los que quedan en el heap) se pasan siempre por referencia, mientras que objetos creados a partir de estructs o de tipos de dato 'nativos' por defecto se pasan por valor  y es opcional pasarlos por referencia.

Cuando se pasa un parametro por referencia lo que se hace 'tras vanbalinas' es pasar un apuntador al objeto, asi pues cuando se pasan objetos instancia de clase como parametro, lo que se esta pasando es realmente un apuntador a esa seccion de memoria en el heap y cuando se pasan estructuras o tipos nativos se pasa un apuntador a la seccion de memoria creada en el stack. Cuando se pasa un parameto que es de tipo struct o tipo nativo se crea una copia del espacio de memoria reservado en el stack y esta es la que se manipula desde el procedimiento.

Güorker:
Gracias por la aclaración Juank.

Saludos

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa