传递引用跟传递拷贝

chaye12 2008-06-13 08:19:29
请问这两者什么区别,能举个例子最好了!
...全文
100 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuan.ye 2008-06-13
  • 打赏
  • 举报
回复
public partial class Default3 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
int a = 9;
int b = a;
bool r= object.ReferenceEquals(a,b);
if (r)
{
Response.Write("引用类型!");
}
else
{
Response.Write("值类型!");
}

car mycar = new car();
object obj = mycar;
bool s = object.ReferenceEquals(mycar,obj);
if (s)
{
Response.Write("引用类型!");
}
else
{
Response.Write("值类型!");
}
}
}
public class car
{
public car()
{

}
}
zyug 2008-06-13
  • 打赏
  • 举报
回复
默认情况下
值类型传递的是拷贝
对像传递的是引用

下面写了一个简单的不知道你看不看得懂



public class ABC
{
public int A;

}

public void change(ABC a)
{
a.A = 20;
}

public void change(int a)
{
a = 20;
}

private void button2_Click(object sender, EventArgs e)
{

int a = 10;

ABC bb = new ABC();
bb.A = 10;

change(a);
change(bb);

MessageBox.Show(a.ToString());
MessageBox.Show(bb.A.ToString());

}

Guid_Guid 2008-06-13
  • 打赏
  • 举报
回复
"引用类型的话 始终都是传递引用的。"我问你怎么是传递引用,
你给我的答案却是用传递引用给我解释的??

你给方法传递的参数总有个类型签名吧,如果是 基本类型的签名 那传递的就是值copy,如果是对象类型,传递的就是这个对象的引用,

public void MethodA(int i,DateTime d){
改变i的值,
改变d的值
}

int ii=10;
DateTime dt=new DateTime();
MethodA(ii,dt);

方法调用完毕后,ii的值还是10,
但是dt的值已经变成你在方法中设定的值了。
ojekleen 2008-06-13
  • 打赏
  • 举报
回复
传递拷贝 就是内存直接复制,具有两个值
传递引用就是传递指向要传递对象的指针。仅有一个对象
chaye12 2008-06-13
  • 打赏
  • 举报
回复
"引用类型的话 始终都是传递引用的。"我问你怎么是传递引用,
你给我的答案却是用传递引用给我解释的??
Coco孙 2008-06-13
  • 打赏
  • 举报
回复
引用是传替值的代号。
比如你去电影远看电影你做的是几好是不变的---->这就是引用。他传替的就是这个几号。所以值会改变!
但是的走了之后别人可以在做你的位置。
应该是这样。
xuan.ye 2008-06-13
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 Guid_Guid 的回复:]
值类型 不加out 或者 ref的话就是copy传递,加上了这两个后可以在方法内部给变量赋值,

引用类型的话 始终都是传递引用的。
[/Quote]
Guid_Guid 2008-06-13
  • 打赏
  • 举报
回复
值类型 不加out 或者 ref的话就是copy传递,加上了这两个后可以在方法内部给变量赋值,

引用类型的话 始终都是传递引用的。

62,025

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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