可能重复:
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”关键字?
答案 0 :(得分:7)
我想问一下是否有办法访问外部类型的非静态成员(来自嵌套类),而不通过构造函数参数传递变量,也不使用“static”关键字。
不,没有办法从嵌套类中访问外部类的实例变量。
在C#中,嵌套类是完全独立的实例,与外部类实例没有直接关系。您需要将Tree
的特定实例传递给Node
构造函数。
Node(Tree parent)
{
objects = new object[parent.nodeCapacity];
}
这样,当Tree
创建它的节点时,它可以将this
传递给构造函数,并且它将被正确读取。但是,这里没有真正的缺点。由于Node
具有私有可访问性,因此在任何情况下只有Tree
个实例可以构造实例。
答案 1 :(得分:0)
这不是您的代码的问题。检查此链接,因为这已经在
之前得到了解答