internal:就是程序集。
那么什么是程序集呢?就是“项目”也就是工程里中的csproj
比如:我有个解决方案,这个方案中有2个项目,1个是控制台程序,1个是webapi项目,那么我这个解决方案中就包括这2个程序集。
接着,我在WebApplication1这个程序集中定义个类:
namespace WebApplication1.Common { public class CA { private string caPrivateName = "privateName"; internal string caInternalName = "lijie"; protected internal string caProtectedInternalName = "LiJie"; public string caPublicName = "lj"; public CA() { } public string GetName() { return caPrivateName; } } }
然后,我在控制台程序中调用这个WebApplication1的东西:
首先要加入“引用”:
然后开始调用:
可以看到public的可以访问,internal 和 protected internal 不能访问。
再看:我在控制台程序中新增个类,继承 WebApplication1.Common.CA 类:
protected internal:就是个并集,同一程序集的可以访问,非同一程序集的子类也可以访问。