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
传递也是如此,同样,该方法完全由对象完成,因此对其进行任何更改都无关紧要。
我正在编写一种方法,其中 return 值直接修改用于向该方法提供参数的 class。
Computer.MatchingPassword = PasswordFinder.Find(Computer.Name, PasswordList)
像这样给传递的参数赋值 属性 有什么危险吗?
从技术上讲,您的代码示例 不会 分配给参数,因为您传递了 Computer
对象的 属性。
换句话说,你只给了函数"name",所以分配给同一个对象的不同属性是没有效果的。
现在,在更一般的情况下,您仍然安全。即使传递了整个对象,当您分配 return 值时 方法已经完成 。您所做的任何更改都不会执行任何操作。
换句话说,下面的代码在功能上是等价的:
string password = PasswordFinder.Find(Computer.Name, PasswordList);
Computer.MatchingPassword = password;
显然没有问题。即使它由 ref
传递也是如此,同样,该方法完全由对象完成,因此对其进行任何更改都无关紧要。