Possible Duplicate:
Nested type problem




假设我有以下代码:

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];
        }
    }
}


这不会编译并给出以下错误:


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


有没有办法访问外部类型的非静态成员(从嵌套类),而无需通过构造函数参数或使用“ static”关键字传递变量?

最佳答案

我想问问是否有一种方法可以访问外部类型的非静态成员(从嵌套类),而无需通过构造函数参数或使用“ static”关键字传递变量。


不,没有办法从嵌套类内部访问外部类的实例变量。

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

Node(Tree parent)
{
    objects = new object[parent.nodeCapacity];
}


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

关于c# - C#嵌套-外部类型的访问成员,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12572446/

10-11 12:38