日期:2014-05-18  浏览次数:20945 次

对于可访问域的概念有不太理解的地方。
最近看《C#程序设计语言》这本书,中文翻译的,看到可访问域的部分时,有这么一段话.

-------------------------------- 书中内容 --------------------------------

在程序P里类型T中声明的嵌套成员M的可访问域定义如下(注意M自己也可能是一个类型)

如果M的声明可访问性为protected internal,假设D是P的程序文本和从在P外部声明的T继承而来的任何类型的程序文本的并集。那么M的可访问域就是T和D的可访问域的交集。

更多的内容在 http://book.51cto.com/art/200911/160233.htm

-------------------------------------------

对于红色文字的部分,我不是很理解是在什么情况,特此来请教各位能否讲解一下,最好用实例帮我说明一下(小弟愚钝,先谢过各位)。

------解决方案--------------------

其实你就是没有理解protected internal这个访问域。。。。

它的访问域只限于包含类派生的当前程序集或类型。。。

你再看D、P、T、M之间的关系。。。
------解决方案--------------------
internal的限制,它只能从当前的assembly(程序集)中被调用。 
默认internal是public,那么用internal标示的空间、方法和属性,相当于public定义,只不过只限于此assembly集合中被调用。 

至于protected internal,除了internal的限制外,还有protected限制,protected的限制就是只能被当前类型内部或者子类调用,加上internal就是只能被此assembly中的当前类型内部或者子类调用。