【原创】关于C#访问修饰符protected internal的说明

来源:互联网 发布:ubuntu arm 国内源 编辑:程序博客网 时间:2024/06/05 01:02


关于C#访问修饰符protected internal的说明


C#中有5中访问修饰符,分为是public、protected、private、internal和protected internal。

这5种访问修饰符都可以对类的成员的访问级别进行限制。

但只有public和internal这两个可以限制类的访问级别。


public:类和类的对象都可以访问

protected:类和子类可以访问,值得一提的是在C#中,类的继承具有传递性,也就是说不止子类可以访问父类中的protected成员,子类的子类也可以。。。

private:只有类内部可以访问

internal:只在相同的程序集中可以访问


还有一种就是protected internal,从字面上理解,是只有相同的程序集中类和子类可以访问。

但是不是这样呢?我们不妨来验证一下。


我们新建两个项目A和B,在A中添加类ClassA。

    public class ClassA    {        protected string _name;        protected internal int _age;    }

在B中添加类ClassB。

    class ClassB : A.ClassA    {        public void Print()        {            Console.WriteLine(_name);            Console.WriteLine(_age);        }    }

发现程序竟然可以成功编译、运行。如果按照我们前面对protected internal的理解,程序应该编译不通过才对。


我们在A项目中添加ClassC类。

    class ClassC    {        ClassA a = new ClassA();        private void Print()        {            Console.WriteLine(a._age);        }    }
发现可以成功编译、运行。

其实protected internal访问修饰符是限制能在本程序集中完全访问,还有在其它程序集中继承访问

0 0
原创粉丝点击