none
Es Posible Modificar Objeto y luego dejarlo igual? RRS feed

  • Pregunta

  • Hola desarrolladores, tengo una duda. Si tengo por ejemplo el objeto Empleado

    var empleado = new Empleado();
    empleado.codigo = 1;
    empleado.nombre = "pepito"
    ...ect
    Hay forma de pasar ese objeto a un método donde lo trabajare y le cambiare los valores de algunas propiedades pero que luego al salir del método siga como estaba al inicio?

    sábado, 3 de septiembre de 2016 22:08

Respuestas

  • hola

    >>Hay forma de pasar ese objeto a un método donde lo trabajare y le cambiare los valores de algunas propiedades pero que luego al salir del método siga como estaba al inicio?

    si lo pasas por referencia (lo cual se pasan todos los objetos) me temo que no

    deberias enviar un clone de objeto a ese metodo para no afectar a la instancia que quede fuera

    depende que tan compleja sea la clase podrias implementar un Shallow copy o un Deep copy, si la entidad no tiene ningun relacion con otra entidad un shallow copy seria simple, usarias el

    Object.MemberwiseClone Method ()

    ahora si es un objeto mas complejo recomendaria que sea un deep copy, entonces analiza al implementacion donde serializa el objeto a xml (lo serializa en memoria)

    Making a Deep Copy with a Copy Constructor

    para despues recuperarlo en una instancia nueva

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Marcado como respuesta CrissR lunes, 5 de septiembre de 2016 13:04
    lunes, 5 de septiembre de 2016 10:03

Todas las respuestas

  • Hola CrissR,

    Antes de responderte, no entiendo la necesidad de enviar un objeto creado a un método para que se edite, y luego retornarlo sin modificaciones ... es como si no hubiera ido al método.

    Si envías el objeto, antes de editar podrías usar la interfaz IClonable para crear un copia, modificas el verdadero y retornas el que fue clonado sin las modificaciones.

    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    sábado, 3 de septiembre de 2016 22:37
  • Hola CrissR

    Cuando se trata de pasar parámetros se puede hacer por valor o por referencia. Revise el siguiente enlace:

    https://msdn.microsoft.com/es-es/library/9t0za5es.aspx

    También puede revisar este:

    https://msdn.microsoft.com/es-es/library/0f66670z.aspx

    Saludos,


    Miguel Torres


    sábado, 3 de septiembre de 2016 22:38
  • hola

    >>Hay forma de pasar ese objeto a un método donde lo trabajare y le cambiare los valores de algunas propiedades pero que luego al salir del método siga como estaba al inicio?

    si lo pasas por referencia (lo cual se pasan todos los objetos) me temo que no

    deberias enviar un clone de objeto a ese metodo para no afectar a la instancia que quede fuera

    depende que tan compleja sea la clase podrias implementar un Shallow copy o un Deep copy, si la entidad no tiene ningun relacion con otra entidad un shallow copy seria simple, usarias el

    Object.MemberwiseClone Method ()

    ahora si es un objeto mas complejo recomendaria que sea un deep copy, entonces analiza al implementacion donde serializa el objeto a xml (lo serializa en memoria)

    Making a Deep Copy with a Copy Constructor

    para despues recuperarlo en una instancia nueva

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Marcado como respuesta CrissR lunes, 5 de septiembre de 2016 13:04
    lunes, 5 de septiembre de 2016 10:03