为了账号安全,请及时绑定邮箱和手机立即绑定

一道简单的代码题目

一道简单的代码题目

慕的地10843 2018-12-07 00:03:24
   首先我定义了一个类:    sealed  class UserModel        {            private string _UserName;            private int _UserAge;                    public int UserAge            {                get { return _UserAge; }                set { _UserAge = value; }            }                   public string UserName            {                get { return _UserName; }                set { _UserName = value; }            }                   public UserModel(string name, Int32 age)            {                UserName = name;                UserAge = age;            }                  public  void DisplayMember()            {                Console.WriteLine("UserName:{0},UserAge:{1}",this.UserName,this.UserAge);            }                public static void SendUserDateByValue(UserModel user)           {               user.UserAge = 34;               user = new UserModel("周宇朝", 21);           }        }       Main函数:               UserModel Model = new UserModel("CSDN", 10);                UserModel.SendUserDateByValue(Model);                Model.DisplayMember();                Console.ReadLine();       看代码,在心中模拟,选择正确的输出结果!     A : UserName:周宇朝,UserAge:34     B : UserName:CSDN,UserAge:10     C : UserName: 周宇朝,UserName:21     D : UserName:CSDN,UserAge:34                                     最好做出详细的解释!!!谢谢  
查看完整描述

3 回答

?
慕沐林林

TA贡献2016条经验 获得超9个赞

选择D,

原因是: UserModel Model = new UserModel("CSDN", 10); 这个做了初始化操作,这个时候 UserName ="CSDN" UserAge=10 ,

然后      

  public static void SendUserDateByValue(UserModel user)           {   

           user.UserAge = 34;          

    user = new UserModel("周宇朝", 21);    

      }

在这个方法里面是把 Model 这个变量的值的拷贝传递进来,user.UserAge = 34;   这条语句操作的对象(mA)实际也是Model 变量引用的对象。所以现在 mA.UserAge 的值 为34,mA.UserName的值还是"CSDN" user = new UserModel("周宇朝", 21);  这条语句相当于user变量引用了一个新的对象(mB)的地址。关键是: Model 变量引用的的对象依然是原来的对象(mA),所以调用  Model.DisplayMember();   相当于输出 mA.UserName,mA.UserAge. 结果是 “CSDN”,“34”;

总结 :参数加上 ref ,out 才是 传递地址、其他的都是传递值。

对象引用变化可以分下面三个阶段:

一、UserModel Model = new UserModel("CSDN", 10);

二、UserModel.SendUserDateByValue(Model);


三、user = new UserModel("周宇朝", 21);


查看完整回答
反对 回复 2019-01-21
?
holdtom

TA贡献1805条经验 获得超10个赞

谢谢写的这么详细,对我们新手帮助很大哈。。。

查看完整回答
反对 回复 2019-01-21
  • 3 回答
  • 0 关注
  • 413 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信