我只是尝试创建这个简单的实现:
class Test
{
private int abc = 0;
public class TestClass
{
private void changeABC()
{
abc = 123;
}
}
}
Run Code Online (Sandbox Code Playgroud)
如果我编译它,它会抱怨:
无法通过嵌套类型"B.Test.TestClass"访问外部类型"A.Test"的非静态成员
我不喜欢设置的解决方案: static int abc = 0;
还有其他解决方案吗?
Kon*_*lph 15
您可能来自Java背景,此代码可以按预期工作.
在C#中,嵌套类型是静态的(用Java的说法),即它们不绑定到父类的实例.这就是您的代码失败的原因.您需要以某种方式将父类的实例传递给子类并访问其成员abc.
内部类需要引用外部类的实例:
class Test
{
private int abc = 0;
public class TestClass
{
private void changeABC(Test test)
{
test.abc = 123;
}
}
}
Run Code Online (Sandbox Code Playgroud)