上图是C#语言中访问修饰符的说明。可以看出default和private是一样的。在C#中对访问修饰符的描述是以程序集为界限的,而JAVA中对访问修饰符是以包为界限的。其中要特别注意的是internal和protected internal。对于这两者的区别可以概括如下:当子类和夫类在同一个程序集时,子类可以访问夫类的internal和protected internal成员,但是当子类和夫类不在同一个程序集时,子类就只能访问protected internal的成员了。在这点上protected internal有点类似JAVA中的protected.
假如我们把这里的程序集类似的看作是JAVA中的包。那么这里可以做一个对比。在JAVA中protected既有包访问权限,又有子类访问权限。也就说它既有internal,又有protected的权限。而C#中把他们细分了。然后又用protected internal来替代JAVA中的protected.所以总起来说C#中的访问权限其实比JAVA就多一种。也就是多了protected这一个权限。