我正在编写一种方法,其中返回值直接修改用于向方法提供参数的类。
Computer.MatchingPassword = PasswordFinder.Find(Computer.Name, PasswordList)
分配给这样的传递参数的属性是否有危险?
答案 0 :(得分:3)
从技术上讲,您的代码示例不会分配给参数,因为您传递了Computer
对象的属性。
换句话说,仅赋予函数“name”,因此分配给同一对象的不同属性将无效。
现在,在更一般的情况下,您仍然安全。即使传递整个对象,当您指定返回值时,该方法已经完成。您所做的任何更改都不会做任何事情。
换句话说,以下代码在功能上是等效的:
string password = PasswordFinder.Find(Computer.Name, PasswordList);
Computer.MatchingPassword = password;
显然没有问题。即使它是由ref
传递的,也是如此,因为该方法完全由对象完成,因此对它的任何更改都无关紧要。