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

c#中通过引用传递参数时的地址跟踪

c#中通过引用传递参数时的地址跟踪

C#
慕标5832272 2021-07-12 12:10:19
当一个对象被引用调用时,什么被压入堆栈?考虑这个代码:using System;class em{   public int i=0;}class program{    public void method(int a, ref int b, em c, ref em d)    {         //implementation    }    static public void Main()    {         int i;         int j;         em e1 = new em();         em e2 = new em();         i=9;         j=10;         Program p=new Program();         p.method(i,ref j,e1,ref e2);    }}当传递 e1 时,对象的引用作为参数传递,但在这段代码中,当 e2 通过引用传递时,什么被压入堆栈,即,什么作为参数传递给方法?以及使用 ref 返回相同对象时传递的内容。
查看完整描述

2 回答

?
陪伴而非守候

TA贡献1757条经验 获得超8个赞

数据存在于堆上,因为 e2 不是值类型,所以只有对堆地址的引用存储在堆栈上。所以你没有传递 e2,只是对 e2 的引用。

这是一个很好的链接,显示了值和引用类型之间的差异以及它们的存储位置。


查看完整回答
反对 回复 2021-07-17
  • 2 回答
  • 0 关注
  • 204 浏览

添加回答

举报

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