我有一个带有一些内部变量的C类。它有一个嵌套的类N,它想要访问C中的变量。虽然C有一些静态方法和变量,但C和N都不是静态的。当我尝试从N中访问C中的非静态变量时,我得到了波浪形的下划线和消息“无法访问静态上下文中的非静态字段[fieldname]”。
这似乎与嵌套类有关,因为我可以从封闭类本身访问变量。
ReSharper建议我制作_t静态,但这不是一个选择。我该如何处理?
public sealed partial class C
{
string _t;
class N
{
void m()
{
_t = "fie"; // Error occurs here
}
}
}
答案 0 :(得分:12)
这不是Java,你没有内部类。
嵌套类的实例不与外部类的任何实例相关联,除非您通过在构造函数中存储引用(也就是句柄/指针)来建立关联。
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
}
}
}