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

当一个对象被引用调用时,什么被压入堆栈?考虑这个代码:


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 返回相同对象时传递的内容。


慕标5832272
浏览 205回答 2
2回答

陪伴而非守候

数据存在于堆上,因为 e2 不是值类型,所以只有对堆地址的引用存储在堆栈上。所以你没有传递 e2,只是对 e2 的引用。这是一个很好的链接,显示了值和引用类型之间的差异以及它们的存储位置。
打开App,查看更多内容
随时随地看视频慕课网APP