繁体   English   中英

当在另一个没有词ref的类方法中将对象作为参数传递时,对象属性会更改。

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM