它是如何存储在内存中的 - 嵌套令人困惑

时间:2012-07-18 22:02:52

标签: c#

http://msdn.microsoft.com/en-us/library/d5x73970(v=vs.80).aspx

在上面的链接“Node”类中有“Node”作为其数据成员。 它是如何存储在内存中的?因为当它为“节点”创建存储器结构时,其中一个成员具有“节点”存储器结构。由于某种原因,我无法理解它在程序中如何解释并由编译器编译的内部工作?

3 个答案:

答案 0 :(得分:2)

我认为您的麻烦源于您直觉地认为数据成员Node(或者更确切地说是为其分配的内存)包含在原始节点中的事实。

理解的关键是Node成员实际上是一个引用 - 它可以是null。因此,用于存储构成节点的数据的内存可以在任何地方。 Node成员本质上是一个指针。

.NET和现代语言往往会掩盖这种事情,因此程序员不需要考虑它。如果我是你,我会考虑找到一个高质量的C文本,并仔细阅读关于指针的章节。

答案 1 :(得分:1)

Node成员在您调用它时没有“嵌入”或“嵌套”。

它只是另一个节点的引用。如果您正在使用C或C ++,那么它在概念上就是指向anohter节点的指针。

答案 2 :(得分:0)

private class Node
{
    private Node next;
    private T data;

    ...
}

私有字段next存储对Node类型对象的引用。它引用的对象将在内存中的其他位置。