我可以访问内部类中的外部类对象

时间:2010-06-02 13:06:48

标签: c# oop class event-handling delegates

我有三个这样的课程。

class A
{
    public class innerB
       {
       //Do something
       }

    public class innerC
       {
        //trying to access objB here directly or indirectly over here. 
        //I dont have to create an object of innerB, but to access the object created by A
        //i.e.
             innerB objInnerB = objB;
        //not like this
             innerB objInnerB= new innerB();
       }

private innerB objB{get;set;}  **//Private**

public A()
   {
    objB= new innerB();
   }
}

我想访问由类A创建的C类中的B类对象。 是否有可能以某种方式对C类中的A类对象进行更改。我可以通过创建事件或无论如何获得A类的对象。

编辑:我在提出上述问题时犯了错误。在A中创建的B对象是私有的非公开

通过创造活动是否可能做到这一点

如果无论如何我能够举起一个可以由A级处理的事件,那么我的问题就可以解决了。

3 个答案:

答案 0 :(得分:21)

如果我正确地读你,你想在innerC中访问类A的objB属性而不传递它。

这不是C#内部类的工作方式,如本文所述:C# nested classes are like C++ nested classes, not Java inner classes

如果你想从innerC访问A.objB,那么你将不得不以某种方式将A类传递给innerC。

答案 1 :(得分:9)

您需要将OuterClass的引用传递给InnerClass,可能在构造函数中,例如:

public class OuterClass
{
    //OuterClass methods

    public class InnerClass
    {
        private OuterClass _outer;

        public InnerClass(OuterClass outer)
        {
            _outer = outer;
        }
    }
}

然后,您可以在所有InnerClass方法中使用该引用。

答案 2 :(得分:-1)

由于您的类B与C类在同一范围内,即在A类中,您将能够从嵌套类型C实例化嵌套类型B并使用它。