C#中 protected internal 和 internal 的区别

http://kudick.blog.163.com/blog/static/1666066320091055414453/   DoDo:

protected: 爷爷有一张银行卡,爸爸可以用,儿子也可以用,隔壁老王不可以用(因为老王跟爷爷没有继承关系)

internal: 王总有一张银行卡,秘书可以用,经理可以用,王总儿子不可以用(因为银行卡属于公家财务,只能由公司内部人员【同一个程序集】使用,王总儿子虽然继承王总,但是他不是公司内部人员,所以也不能公款私用)

PS: 如果各个程序集使用了相同的强命名,那么internal也可以在不同的程序集下使用,就比如上面的internal例子,

王总有一张银行卡(而且还有一本存折【存折相当于强命名】),同时王总的儿子也有一本存折【一样的强命名】,那么王总的儿子也可以使用了,隔壁老王也有同样的存折【强命名】所以他也可以取钱!!

    private<protected/internal<public 这个很明显了。 关键是protected和internal的问题。   protected限定的是只有在继承的子类中才可以访问,可以跨程序集           internal限定的是只有在同一个程序集中才可以访问,可以跨类    所以它们是有点交叉的。 当一个CLASS是ITERNAL的时候,要求其所有的成员的限定范围不能大于internal。 所以,当一个INTERNAL的CLASS写PROTECTED的时候,就需要两个限定符了: internal   protected 这样,限定了访问范围是:本程序集、继承的子类。 因此,关系是: private<internal   protected<internal/protected<public internal和protected的具体范围大小就不能准确的界顶了。
posted @ 2014-10-20 11:15  adodo1  Views(2982)  Comments(0Edit  收藏  举报