c#中public,private,protected,internal的区别

public 可以被外部成员调用

private 只能在被类的成员调用
protected 只能在被类的成员和该类的子类调用

internal 可以在当前项目调用

public: 对任何类和成员都公开, 无限制访问;
protected: 仅仅对该类以及该类的派生类公开;
private: 仅仅对该类公开;
internal: 只能值包含该类的程序集中访问该类;
protected internal: 只能在本类,派生类或者包含该类的程序集中访问.

比如说:一个人A为父类,他的儿子B,妻子C,私生子D(注:D不在他家里)

如果我们给A的事情增加修饰符:

public事件,地球人都知道,全公开

protected事件,A,B,D知道(A和他的所有儿子知道,妻子C不知道)

private事件,只有A知道(隐私?心事?)

internal事件,A,B,C知道(A家里人都知道,私生子D不知道)

protected internal事件,A,B,C,D都知道,其它人不知道

另外:

貌似protected,internal,protected internal只能修饰嵌套类(nested class),下面代码编译错误:

    protected class C 
    { 
        public int Get C() 
        { 
            return 3; 
        } 
    }

错误信息:Namespace elements cannot be explicitly declared as private, protected, or protected internal

微软官方解释:不嵌套在其他类型中的顶级类型的可访问性只能是 internal 或 public。这些类型的默认可访问性是 internal。

Tips:

1,命名空间上不允许使用访问修饰符。命名空间没有访问限制。
2,一个成员或类型只能有一个访问修饰符,使用 protectedinternal 组合时除外

最后注意:

1,assembly中的class默认访问修饰符为internal

2,类中的字段默认为private

3,类中的方法默认为private,包括构造函数

转载地址:http://blog.csdn.net/jadeflute/article/details/5019478
原文地址:http://hi.baidu.com/%B3%AC%C8%CBxbaby/blog/item/7ef16422109f264dad34de10.html

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值