日期:2014-05-17  浏览次数:20909 次

C#类嵌套定义的问题
namespace _1413_接口
{
    class Program
    {
        static void Main(string[] args)
        {
           MyClass m = new MyClass();
            m.b.fun();
        }
    }

    class MyClass
    {
        public class B
        {
            public void fun()
            {
                MyClass.sf();
                C c = new C();
                c.f();
                //可以访问到MyClass的私有类型以及静态方法,但是不能访问MyClass的数据成员
            }
        }
        public B b = new B();
        public void f()
        {
            Console.WriteLine("hello");
        }

        private class C
        {
            private int x;
            public void f()
            {
                Console.WriteLine("hello");
            }
        }

        private static void sf()
        {
            Console.WriteLine("static hello");
        }

        public int x;
        private int y;
    }
}


上述代码中,fun无法访问MyClass的数据成员x和y,但是能访问MyClass的嵌套类定义C和静态方法,我觉得这是因为B,C以及MyClass的静态成员函数都是在MyClass这个类作用域内。不知道这么理解对不对。

对于fun无法访问x和y,不知道是不是因为这两个数据成员不是属于类的?

希望能给个解释,顺便再看看《C#高级编程》(第七版中文版,p106 4.3修饰符这一节)的

中,红色方框里说的对于fun无法访问MyClass的数据成员x和y怎么解释。