继承调用类的变量

本文关键字:变量 调用 继承 | 更新日期: 2023-09-27 18:15:05

如果我创建一个私有嵌套类,我如何从调用类访问变量和方法?

的例子:

   public class ClassA
   {
      protected int MyVar=100;
      public MethodA()
      {
         // <some code>
         myObjectClassB.DoSomething(); 
         // <some code>
      }
      private class ClassB
      {
         public DoSomething()
         {
         }
      }
   }

在上面的例子中,我需要ClassB能够访问ClassA。MyVar——这可能吗?

继承调用类的变量

当你构造一个ClassB的实例时,给它一个对拥有它的ClassA的引用。

  private class ClassB
  {
     private readonly ClassA _owner;
     public ClassB(ClassA owner)
     {
          _owner = owner;
     }
     public DoSomething()
     {
     }
  }
值得注意的一点是,私有嵌套类实际上可以通过_owner访问ClassA的私有成员。当您有一个内部助手类需要访问该类的整体私有状态时,这通常会派上用场。

好的,Dan Bryant比我先说了,只是他忘了补充一点,为了访问它,你必须将受保护的变量设为内部。除了命名约定之外,嵌套类与其他非嵌套类没有什么不同。它不会获得它所嵌套的类的任何特殊特权。这纯粹是一种组织性的东西。

编辑:好吧,也许我错了。在此之后,我实际上读了Dan的回答的其余部分,似乎我错了:) 编辑2:经过几次搜索,我发现我的想法并不完全错误,但这只是取决于你正在使用的编译器。旧的c++规范不允许这样做,但大多数编译器都允许这样做,最终他们修改了文档,以反映编译器中实际发生的情况。