我的对象会更新我认为使用此方法更新的方式(C#)吗?

时间:2010-11-05 18:24:30

标签: c#

这似乎是一个CS101问题,但我已经设法彻底迷惑自己。

    //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
    }
}

当我进入“保存”行时,它将使用secondObject中的名称正确更新objectToUpdate,对吗?当你将它传递给Update方法时,它会自带一个引用吗?

3 个答案:

答案 0 :(得分:3)

答案 1 :(得分:0)

这对我来说是正确的。当您转到Save()行时,objectToUpdate.Name将与secondObject.Name

相同

如果逻辑上更容易阅读,您可以更改此行以包含“this。”

this.Name = secondObject.Name

以便您意识到要设置的Name属性是属于'this'的属性,该属性与调用该方法的对象实例相同。代码在功能上是相同的,但可能更容易理解?

答案 2 :(得分:0)

是的,.NET Object的值实际上是存储该对象的内存地址。说firstObject = secondObject不会影响调用方法中引用的secondObject,但是说firstObject.Name = secondObject.Name会更改Name的值。