一道关于对象引用的问题...

kevin_520_kevin 2010-10-10 06:13:30
首先我定义了一个类:
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();


请问输出的结果是什么?
...全文
148 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
kevin_520_kevin 2010-10-14
  • 打赏
  • 举报
回复
刚看错了,7#的年龄错了,是34
kevin_520_kevin 2010-10-14
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 phil999 的回复:]
楼主要问的真正问题是什么?
[/Quote]


main()方法的输出结果???
我记得答案好像是7楼那样的,具体为什么不太懂
phil999 2010-10-10
  • 打赏
  • 举报
回复
楼主要问的真正问题是什么?
phil999 2010-10-10
  • 打赏
  • 举报
回复
UserName:CSDN,UserAge:34
d60000522 2010-10-10
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 fbzhang0513 的回复:]
确定答案: CSDN 34
c# 默认是按值传递的
user = new UserModel("周宇朝", 21); 是无效的
[/Quote]

c# 默认是按值传递的 我觉这句话说得有点不对。再没有 ref out 等关键字时 针对引用类型的话,我觉得也是值传递 但是这个值是地址。
针对结构类型的话,也是值传递 值是被传递的数据的一个copy
d60000522 2010-10-10
  • 打赏
  • 举报
回复
UserName:CSDN,UserAge:34

我没有试 我想答案应该是对的。 以为再被调用的方法里面的这个new UserModel("周宇朝", 21)对象这离开作用域后被销毁了。 个人见解!
jointan 2010-10-10
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 xiaoshen1360 的回复:]
引用 7 楼 force_miao 的回复:
答案:UserName:CSDN,UserAge:10


[/Quote]
砸,我可是用大单子砸,嘿嘿~
xiaoshen1360 2010-10-10
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 force_miao 的回复:]
答案:UserName:CSDN,UserAge:10
[/Quote]
jointan 2010-10-10
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 force_miao 的回复:]
答案:UserName:CSDN,UserAge:10
[/Quote]

你哪来的10??,人家已经在UserModel.SendUserDateByValue(Model); 中把10搞成34了.

不试...
force_miao 2010-10-10
  • 打赏
  • 举报
回复
答案:UserName:CSDN,UserAge:10
bloodish 2010-10-10
  • 打赏
  • 举报
回复
看不看得懂,看楼主自己领悟了,画图比较麻烦,示意一下

address data
object 0x0010 {csdn,10}
reference 0x1000 0x0010 -->Model

//call SendUserDataByValue
reference 0x2000 0x0010 -->User

//user = new UserMode(...)
object 0x0020 {周宇朝,21}
reference 0x2000 0x0020 -->User
fbzhang0513 2010-10-10
  • 打赏
  • 举报
回复
确定答案: CSDN 34
c# 默认是按值传递的
user = new UserModel("周宇朝", 21); 是无效的
wuyq11 2010-10-10
  • 打赏
  • 举报
回复
public static void SendUserDateByValue(UserModel user)
{
user = new UserModel("周宇朝", 21);
user.UserAge = 34;
}
ref T
jointan 2010-10-10
  • 打赏
  • 举报
回复
我猜想肯是带34的那个

对于分不清是不是陷井的东西,一般没人碰,至我一般不这么干

等我没事时试试........


你们也猜完再试试
huanshayi 2010-10-10
  • 打赏
  • 举报
回复
UserName:周宇朝,UserAge:21
大飞飞虫 2010-10-10
  • 打赏
  • 举报
回复
user = new UserModel("周宇朝", 21);
这个

---
SendUserDateByValue(UserModel user) 是引用传参

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧