[英]Object property is changed when object is passed as parameter in another class method without the word ref.
尽管正在寻找类似的问题和答案,但我在C#中还是无法理解。
我有一个ID为0的对象cCar(汽车类)。我从类CarManager将此对象传递给了一个名为CreateCarInDB的方法,而没有使用ref字:
public static void CreateCarInDB(Car p_cCar)
{
int newId = CarDB.SaveNewCar(p_cCar);
p_cCar.ID = new Id;
}
我只是想了解为什么执行该方法后,如果我看,例如cCar对象的ID = 1。 我是否应该在方法参数前使用单词ref,以便该值在方法外部受到影响? 我以为我只是传递值,而不传递参考。
似乎我不需要使用ref这个词。
我是否应该在方法参数前使用单词ref,以便该值在方法外部受到影响?
不,因为您没有更改p_cCar
的值,这只是一个参考。 您正在更改引用所引用的对象的内容。
如果您有这样的代码行:
p_cCar = new Car();
...并且您希望调用者看到该更改, 那么您需要ref
(或out
)关键字。 根据我的经验,那几乎不是您想要做的。
为了以真实的方式表达,有人可以在一张纸上写他们的地址,并要求您将前门涂成绿色。 您可以修改他们房屋的外观(粉刷前门),他们会看到的。 但是,如果您决定在纸上划掉他们的地址并写另一张纸,那不会改变他们对居住地的看法。
更多信息:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.