方法的返回值是修改作为方法参数传递的对象

时间:2015-02-03 23:08:46

标签: c# oop

我正在编写一种方法,其中返回值直接修改用于向方法提供参数的类。

Computer.MatchingPassword = PasswordFinder.Find(Computer.Name, PasswordList)

分配给这样的传递参数的属性是否有危险?

1 个答案:

答案 0 :(得分:3)

从技术上讲,您的代码示例不会分配给参数,因为您传递了Computer对象的属性。

换句话说,赋予函数“name”,因此分配给同一对象的不同属性将无效。

现在,在更一般的情况下,您仍然安全。即使传递整个对象,当您指定返回值时,该方法已经完成。您所做的任何更改都不会做任何事情。

换句话说,以下代码在功能上是等效的:

string password = PasswordFinder.Find(Computer.Name, PasswordList);
Computer.MatchingPassword = password;

显然没有问题。即使它是由ref传递的,也是如此,因为该方法完全由对象完成,因此对它的任何更改都无关紧要。