2010-11-05 4 views
0

Cela pourrait ressembler à une question CS101, mais j'ai réussi à me confondre complètement.Mon objet sera-t-il mis à jour de la façon dont je pense qu'il sera mis à jour en utilisant cette méthode (C#)?

//this is inside a service class 
    ObjectToUpdate objectToUpdate = objectrepository.Get(objectToUpdate.Id); 
    SecondObject secondObject = secondObjectRepository.Get(secondObject.Id); 
    objectToUpdate.Update(secondObject); 
    objectRepository.Save(objectToUpdate); 

    //the object itself 
    public class ObjectToUpdate { 
    public int Id { get; set; } 
    public string Name { get; set; } 

    public void Update(SecondObject secondObject) { 
    Name = secondObject.Name 
    } 
} 

Quand je reçois à la ligne « Enregistrer », il correctement mis à jour le objectToUpdate ont le nom du secondObject, correct? Il porte une référence à lui-même lorsque vous passez à la méthode Update?

Répondre

0

Cela me semble correct. Lorsque vous arrivez à la Save() la ligne, objectToUpdate.Name sera le même que secondObject.Name


S'il est plus facile à lire logiquement, vous pouvez modifier cette ligne pour inclure « cela. »

this.Name = secondObject.Name 

pour que vous réalisiez que la propriété Name régler est celui qui appartient à « ce » qui est la même instance d'objet que la méthode a été appelée. Le code est fonctionnellement identique, mais pourrait être plus facile à comprendre?

0

Oui, la valeur d'un objet .NET est en fait l'adresse mémoire dans laquelle cet objet est stocké. Dire firstObject = secondObject n'affecterait pas le secondObject référencé dans la méthode d'appel, mais en disant firstObject.Name = secondObject.Name va changer la valeur du Name.

Questions connexes