请问c#中内部类如何访问外部类的非静态变量?
class A
{
   private int a;
   
   class B
   {
       private int b;
       b=a;
   }
}java中可以,请问c#中这里怎么用?

解决方案 »

  1.   

    C#中的内部类能够使用外部类定义的类型和静态方法,但是不能直接使用外部类的实例方法!而在C#中,类区分为Nested Class和Not-Nested Class,前者是声明在其他数据类型内部的类。后者是直接定义在某一个命名空间的类。非内嵌类只允许使用public和internal的访问控制,而内置类则允许使用所有的五种访问控制符,private, protected , internal protected。内部类也可以访问外部类的所有方法,包括instance方法和private方法,但是需要显式的传递一个外部类的实例。 
      

  2.   

    办法之一是
    class A
    {
        private static int a;
        class B
        {
            private int b;
            public B()
            {
                b = A.a;
            }
        }
    }如果不想把a定义成static,就得把A实例化之后再用