我的对象是否会以我认为的方式使用此方法(C#)进行更新?
这可能看起来像是一个CS101问题,但我已经完全弄糊涂了我的对象是否会以我认为的方式使用此方法(C#)进行更新?,c#,C#,这可能看起来像是一个CS101问题,但我已经完全弄糊涂了 //this is inside a service class ObjectToUpdate objectToUpdate = objectrepository.Get(objectToUpdate.Id); SecondObject secondObject = secondObjectRepository.Get(secondObject.Id); objectToUpdate.Update(seco
//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
}
}
当我到达“保存”行时,它将正确地用第二个对象的名称更新objectToUpdate,对吗?当您将其传递给Update方法时,它本身带有一个引用?是的,类是通过引用传递的,因此您将传递对同一对象的引用。本教程为理解这一概念提供了很好的参考:是的,类是通过引用传递的,因此您将传递对同一对象的引用。本教程为理解这个概念提供了一个很好的参考:对我来说是正确的。到达Save()行时,
objectToUpdate.Name
将与secondObject.Name
如果逻辑上更容易阅读,您可以将此行更改为包含“this”
因此,您会意识到正在设置的Name属性是属于“this”的属性,而“this”是调用该方法的同一个对象实例。代码在功能上是相同的,但可能更容易理解?这在我看来是正确的。到达Save()行时,
objectToUpdate.Name
将与secondObject.Name
如果逻辑上更容易阅读,您可以将此行更改为包含“this”
因此,您会意识到正在设置的Name属性是属于“this”的属性,而“this”是调用该方法的同一个对象实例。代码功能相同,但可能更容易理解?是的,.NET对象的值实际上是存储该对象的内存地址。说
firstObject=secondObject
不会影响调用方法中引用的secondObject,但说firstObject.Name=secondObject.Name
会更改Name的值是的,.NET对象的值实际上是存储该对象的内存地址。说firstObject=secondObject
不会影响调用方法中引用的secondObject,但说firstObject.Name=secondObject.Name
会更改Name
的值
this.Name = secondObject.Name