C#中类的访问级别

class Program
    {
         public class A
            {
                private int a1;
                public int b1;
                internal int c1;
                protected int d1;
            }
        private class A1
            {
                private int a1;
                public int b1;
                internal int c1;
                protected int d1;
            }
        internal class A3
            {
                private int a1;
                public int b1;
                internal  int c1;
                protected int d1;
            }
        protected class A4
            {
                private int a1;
                public int b1;
                internal int c1;
                protected int d1;
            }
        static void Main(string[] args)
        {
           A4 n=new A4();
此时对于对象只能访问类中的public和internal修饰的成员。类成员的修饰类型目的就是针对外部对象对自身的访问。
        }
    }
</pre><pre name="code" class="html">   internal class A3
            {
                private int a1;
                public int b1;
                internal  int c1;
                protected int d1;
             public void GetWorld(A1 m)
                {
                    Console.WriteLine("成员:"+m.b1);        //用别的类对象作为参数,就相当于在外部访问类中的成员,只能访问public和internal类型
                }
            }

当本类(任何类型的类public、private的无关)类型的时候,类的对象能访问本类和父类中的public和internal类型成员,private和protected的无法访问;

类的对象访问只能访问类成员中的public和internal的变量,起到的就是保护作用,但是对于类内部的成员函数,它可以使用类中的任何成员,比如:
       internal class A2:A1                   //A1类型不影响
            {
                private int a21;
                public int b21;
                internal  int c21;
                protected int d21;
                public void GetWorld(A2 m)
                {
                    Console.WriteLine("成员:" + m);            //m就可以访问本类中的任何成员以及A1中出private类型外的成员,继承不了private,所以不能访问
                }                                               //本质上还是类中的成员可以访问类中的任何成员变量
                public void GetWorld(A1 m)
                {
                    Console.WriteLine("成员:" + m);                //m就可以访问A1类中的public、internal成员,即使继承了A1,也只能访问public和internal类型
                }
            }

只要类对象的使用在类声明的外部,那么对象只能访问类中的public和internal成员,其它的一概不能访问。private只能类自己访问,prote


原文地址:https://www.cnblogs.com/dengshiwei/p/3971457.html