这是我的代码,如下所示:
namespace HCC.SMS4.REFACTOR.TEST.PUBLISH
{
public class RunningService
{
public void Running()
{
bool signal = true;
var user = new User()
{
ID = "10"
};
int count = 0;
do
{
try
{
count++;
if (count == 3)
{
throw new Exception("aaa");
}
ConsumeUserInfo(user);
}
catch (Exception ex)
{
user = null;
}
Thread.Sleep(1000);
} while (signal);
}
public void ConsumeUserInfo(User user)
{
if (user == null)
{
user = new User()
{
ID = "2"
};
}
Console.WriteLine("=========" + user.ID);
}
}
}
当循环第三次运行时,它将引发异常,然后将用户设置为空。
当它第四次运行时,它以用户为null的方式运行到ConsumeUserInfo中。内部ConsumeUserInfo,将用户设置为ID为2的新实例。
当它第五次运行时,我发现该用户为西特尔null。由于它是在第4个循环中用一个实例设置的,为什么在这里它是sitll null?以我的假设,如果参数类型是对象,则在方法内部对其进行修改时,更改也应反映在方法外部。