从派生&&子类访问基类字段

时间:2014-12-29 14:12:47

标签: c# class subclass base derived

我无法理解为什么我可以访问Base class'字段。我没有Base类的对象,并且我不知道私有字段是否继承。当我试图获得领域时,我会#34;课程" SubDerived"用反射,它找不到它。请任何人解释..

using System;

    namespace tests
    {
        public class Test
        {
            static void Main()
            {
                Base.SubDerived a = new Base.SubDerived();
                a.f();

                Console.ReadLine();
            }
        }

        class Base
        {
            int i = 1;

            public class SubDerived : Base
            {
                public void f()
                {
                    Console.WriteLine(base.i);
                }
            }
        }
    }

1 个答案:

答案 0 :(得分:4)

SubDerived是嵌套的,这就是为什么它可以访问父类型的private成员。如果您这样做:

class Base
{
   int i = 1;
}
public class SubDerived : Base
{
   public void f()
   {
        Console.WriteLine(base.i);
   }
}

您无法访问i。您需要将其设为protected