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/