我有一个询问。许多人都知道这个话题,但我最近才发现它,我可能有一些基本的问题。
在this site上,我们可以阅读有关内存间接的内容。
从该站点,我了解到一个级别的方向与引用类型匹配,即引用类型的变量只有一个指向内存中某处的指针,其中对象被分配。这就是我理解的间接水平。
问题:这种理解是否正确?
如果不是,那么正确的理解是什么?什么是两个层次的间接?
如果是的话,第二级间接是什么?它会指向另一个指针吗?是这样吗?
您已为第二级间接提供了示例。在C#中签名如下:
DoWork(ref MyType x)
需要引用引用类型。这与您的非托管签名相同(如您链接的文章中所述)
DoWork(MyType** x);
所以指向指针的指针。
您的理解是正确的 - 引用类型提供至少一个间接级别,因为它是指向对象的指针。 ref MyType x
是对引用类型的引用,因此它是指向对象的指针,因此是第二级间接引用。