C#嵌套 - 访问外部类型的成员

Nik*_*íša 2 c# nested class

可能重复:
嵌套类型问题

假设我有这段代码:

public class Tree
{
    private readonly int nodeCapacity;
    public int NodeCapacity { get { return nodeCapacity; } }

    public Tree(int nodeCapacity)
    {
        this.nodeCapacity = nodeCapacity;
    }

    private class Node
    {
        object[] objects;
        Node()
        {
            objects = new object[nodeCapacity];
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这不编译并给出此错误:

无法访问外部类型的非静态成员...

有没有办法访问外部类型的非静态成员(来自嵌套类)而不通过构造函数参数传递变量,也不使用"static"关键字?

Ree*_*sey 7

我想问一下是否有办法访问外部类型的非静态成员(来自嵌套类),而不通过构造函数参数传递变量,也不使用"static"关键字.

不,无法从嵌套类中访问外部类的实例变量.

在C#中,嵌套类是完全独立的实例,与外部类实例没有直接关系.您将需要的特定实例传递TreeNode构造函数.

Node(Tree parent)
{
    objects = new object[parent.nodeCapacity];
}
Run Code Online (Sandbox Code Playgroud)

这样,当Tree创建它的节点时,它可以传递this给构造函数,并且它将被正确读取.但是,这里没有真正的缺点.由于Node具有私有可访问性,Tree因此在任何情况下只有实例可以构造实例.