C# internal
先看下面两张图,第一张是代码,第二种是前面代码打包的.dll文件,区别很明显,private,protected(忘了加进去)和internal的东西都不会在.dll文件中出现,也就是说引用这个dll的程序不会访问到上面这些字段,private和protected就很明显不需要解释。
internal字段为什么不会被引用的程序访问呢?因为internal的意思是只能在本程序集内访问,他在本程序集相当于public,但是出了这个程序集就跟私有的一样,不会被访问到。
这样做的意义是什么呢?就是有些东西需要定义为public,又害怕引用的人调用这个东西修改了封装好的数据。比如我之前封装一个异步加载场景的loading界面,我只希望别人得到我的进度是多少,但是我在加载的时候我需要在加载的类中设置这个进度,对于外界来说他们是不能设置进度的,只要知道进度是多少就可以了,所以可以把写属性写成internal(见图3),这时候他们还是一个程序集,internal相当于public,现在把封装的东西打包成.dll,就可以看到像图4的东西,set属性没有了。有什么不对的请大佬们指出来~
1
2
3
4