我在class C
中得到了struct S
作为嵌套声明,我想在S
的构造函数中引用C
的成员:
public class C {
private int class_state = 0;
private struct S {
public int struct_state;
public S () {
struct_state = class_state;
}
}
public void foo (int state) {
class_state = state;
}
public void bar () {
S s = new S();
}
}
产生一个错误,class_state
是非静态的,因此需要引用C
的实例。
是否有一个隐式的方法来告诉struct S
引用它实例化的实例?
No。与Java不同,c#嵌套类型没有"相似"。或";automatic"对封闭类型实例的引用。
嵌套类型可以访问其包含类型可访问的所有成员。它可以访问包含类型的私有和受保护成员,包括任何继承的受保护成员。"但:
要访问包含类型,将其作为参数传递给嵌套类型的构造函数。。">