Return 方法的值正在修改作为方法参数传递的对象

Return value of method is modifying an object passed as a method parameter

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

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

像这样给传递的参数赋值 属性 有什么危险吗?

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

换句话说,你给了函数"name",所以分配给同一个对象的不同属性是没有效果的。

现在,在更一般的情况下,您仍然安全。即使传递了整个对象,当您分配 return 值时 方法已经完成 。您所做的任何更改都不会执行任何操作。

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

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

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