protected: 爷爷有一张银行卡,爸爸可以用,儿子也可以用,隔壁老王不可以用(因为老王跟爷爷没有继承关系)
internal: 王总有一张银行卡,秘书可以用,经理可以用,王总儿子不可以用(因为银行卡属于公家财务,只能由公司内部人员【同一个程序集】使用,王总儿子虽然继承王总,但是他不是公司内部人员,所以也不能公款私用)
命名空间元素无法显式声明为 private、protected 或 protected internal的原因:
命名空间内只能包含public或者internal的类定义,结构定义,接口定义等,如果没有指定,默认是internal。 protected表示存取限制于包含此定义的类或者继承类,命名空间是不可能继承的,所以protected用于命名空间内的定义是无意义的。而protected可以用于嵌套类,比如下面的代码是正确的。
namespace N1
{
class C1
{
protected class C2
{
}
}
}