在方法内部修改参数,但在方法外部未更改

时间:2019-04-24 06:30:12

标签: c#

这是我的代码,如下所示:

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?以我的假设,如果参数类型是对象,则在方法内部对其进行修改时,更改也应反映在方法外部。

0 个答案:

没有答案