如下所示,是关于嵌套类的;class A{   //...   class B   {      //...   }}嵌套类是一个很用的设置,如上所示,类B,是类A的一个成员,MSDN建议内部类比如上面的类B,尽量采用private访问方案,作为类A(外部类)的一个成员的类B中,是可以访问类A的包括私有成员在内的任何成员的,这一点也是内部类与其它平行类关系的唯一区别,很显然作为一个类的成员来说,它们之间其实并不同于象其它平行关系的类之间那样需要"手动"的为其添加引用以后才可以相互访问比如 class C{  D d;}class D{}只有在手动的为C类添加了D的对象d以后,才可以访问到类D,而嵌套类,本来就是其外部类的一个成员,为什么同样也需要"手动"的也这样为其"添加"一个引用呢?这使得它们之间交互并不那么"通畅了"为什么不象base,this这些访问关键字那样,也为 这种嵌套关系设置一种相互可以访问的"关键字"呢?比如 inner ,outer,什么的,使我们不必手动申明就可以达成嵌套类之间的相互访问呢?象这样:class A{   int num;   string address;   class B   {      void TestM1()      {         outer.num=5;         outer.address="qiyang street..."      }   }   B b;   public A()   {      this.b=new B();   }}这里因为,内部类对外部类是多对一的关系(一个外部类中可以申明任意多个内部类)所以,外部类中无法象内部类那样使用一个确定的如示例中给出的"outer"这样的关键字就象使用this关键字那样,存在某种可以访问内部类的关键字比我原来设想中提到的"inner"等,所以,在上面例子中依然直接"手动"的为A类添加B类的一个引用实例,着为它们之间的访问桥梁,这样做看来也没什么不妥...不知道我的这个想法如何,请MS的中文论坛的专家和其它开发伙伴以及朋友,共同的讨论,看这个想法是否具有一定价值.谢谢!
 

解决方案 »

  1.   

    有那样的关键字是能方便一点,不过这个用的也不会太多.. 比起THIS BASE之类的就算太少了..
      

  2.   


    class A
    {
    class B
    {
    }
    }只是在类A内定义了一个类型,哪果理解不了,可以把这个类型想象成Int,而Int只是类型,不是变量,所以不能访问。
    如果有关键字X比如Inner的话,那如果类A中定义了两个嵌套类的话,那么Inner是访问哪个?如果把B再定义成非Private的访问限制的话,那么在能访问到B的地方可以定义A.B ab = new A.b();
    虽然微软建议把B定义成Private,但是有些时候你不得不这样使用它,比如public class A1
    {
       private B b1;   protected class B
       {
       }
    }public class A2:A1
    {
       private B b2;
    }