将对象作为参数进行值传递

see2you 2006-12-12 05:29:21
namespace Happy
{
public class Element
{
public int Number=10;
}
public class Test
{
public static void Change(Element s)
{
Element r = new Element();
r.Number = 100;
s = r;
}
}
public class Time : System.Web.UI.Page
{
private void Page_Load(object sender, System.EventArgs e)
{
Happy.Element ey = new Happy.Element();
Response.Write(ey.Number+"\n");
Test.Change(ey);
Response.Write(ey.Number);
}
}
}
在方法Test.Change(s)中,对象间赋值,为什么形参s的Number没有改变.
而 public class Test
{
public static void Change(Element s)
{
s.Number =100;
}
}
就会改变属性值。
...全文
258 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
fest 2006-12-13
  • 打赏
  • 举报
回复
mark
see2you 2006-12-13
  • 打赏
  • 举报
回复
来过的,顶顶,
BeRush 2006-12-13
  • 打赏
  • 举报
回复
的确奇怪。
按我的理解应该也是变的,因为对象应该是地址传递的。
smartstar2005 2006-12-12
  • 打赏
  • 举报
回复
Mark
bbdog 2006-12-12
  • 打赏
  • 举报
回复
关注一下。
see2you 2006-12-12
  • 打赏
  • 举报
回复
这个例子是在一篇讨论值传递和地址传递的文章中看到的,将对象进行值传递和简单类型变量进行值传递比较。 第一次,在Change()方法中直接对s对象的Number属性赋值,大家都明白。后又举例在Change()方法中实例一个对象r,r赋值给s。输出的结果s的属性没有变,在这里跟大家讨论一下为什么。
justindreams 2006-12-12
  • 打赏
  • 举报
回复
public static void Change(ref Element s)
{
Element r = new Element();
r.Number = 100;
s = r;
}


传递参数时注意参数类型
see2you 2006-12-12
  • 打赏
  • 举报
回复
这里不使用ref,只拿对象进行值传递。s = r为什么没有使s的属性改变,有知道的请解释一下原因。谢谢
xray2005 2006-12-12
  • 打赏
  • 举报
回复
学习ing
silent_x 2006-12-12
  • 打赏
  • 举报
回复
ref

110,536

社区成员

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

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

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