问题
I have a class C with some internal variables. It has a nested class N that wants to access the variables in C. Neither C nor N are static, although C has some static methods and variables. When I try to access a non-static variable in C from N I get the squiggly underline and the message "Cannot access non-static field [fieldname] in static context".
This seems to have something to do with the nested class, since I can access the variable fine from the enclosing class itself.
ReSharper suggests I make _t static but that isn't an option. How do I deal with this?
public sealed partial class C
{
string _t;
class N
{
void m()
{
_t = "fie"; // Error occurs here
}
}
}
回答1:
This isn't Java, and you don't have inner classes.
An instance of a nested class is not associated with any instance of the outer class, unless you make an association by storing a reference (aka handle/pointer) inside the constructor.
public sealed partial class C
{
string _t;
class N
{
readonly C outer;
public N(C parent) { outer = parent; }
void m()
{
outer._t = "fie"; // Error is gone
}
}
}
来源:https://stackoverflow.com/questions/10988878/nested-class-cannot-access-non-static-field-in-static-context