嵌套类型问题

oli*_*dev 7 c# nested-class

我只是尝试创建这个简单的实现:

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.


dtb*_*dtb 8

内部类需要引用外部类的实例:

class Test
{
   private int abc = 0;

   public class TestClass
   {
      private void changeABC(Test test)
      {
         test.abc = 123;
      }
   }
}
Run Code Online (Sandbox Code Playgroud)