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

Tam*_*dze 2 c# class derived base subclass

我不明白为什么我可以访问 Base 类的字段。我没有 Base 类的对象,据我所知,私有字段没有被继承。当我尝试通过反射获取“SubDerived”类的字段“i”时,它找不到它。请任何人解释..

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);
                }
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

Sel*_*enç 5

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

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

您将无法访问i。您需要进行访问protected。