C#共有五种访问修饰符:public、private、protected、internal、protected internal.

C#访问修饰符总结
标签: c#stringclasssysteminterfacestruct
23787人阅读 评论(18) 收藏 举报
本文章已收录于:
分类:
  •  
    • C#共有五种访问修饰符:public、private、protected、internal、protected internal。作用范围如下表:
访问修饰符说明
public公有访问。不受任何限制。
private私有访问。只限于本类成员访问,子类,实例都不能访问。
protected保护访问。只限于本类和子类访问,实例不能访问。
internal内部访问。只限于本项目内访问,其他不能访问。
protected internal内部保护访问。只限于本项目或是子类访问,其他不能访问

C#成员类型的可修饰及默认修饰符如下表:

成员类型默认修饰符可被修饰符
enumpublicnone
classprivatepublic、protected、internal、private、
protected internal
interfacepublicnone
structprivatepublic、internal、private

下面我就结合实例,讲一下public、private、protected、internal和protected internal的作用范围。

如下代码:

    1:  using System;
   2:  using System.Collections.Generic;
   3:  using System.Text;
   4:   
   5:  namespace AccessModifier
   6:  {
   7:      public class AccessModifierClass
   8:      {
   9:          public string GetPublicString()
  10:          {
  11:              return "Public String";
  12:          }
  13:   
  14:          protected string GetProtectedString()
  15:          {
  16:              return "Protected String";
  17:          }
  18:   
  19:          private string GetPrivateString()
  20:          {
  21:              return "Private String";
  22:          }
  23:   
  24:          internal string GetInternalString()
  25:          {
  26:              return "Internal String";
  27:          }
  28:   
  29:          protected internal string GetProtectedInternalString()
  30:          {
  31:              return "Protected Internal String";
  32:          }
  33:   
  34:          void AvailableAccessModifier()
  35:          {
  36:              this.GetPublicString();
  37:              this.GetPrivateString();
  38:              this.GetInternalString();
  39:              this.GetProtectedInternalString();
  40:              this.GetProtectedString();
  41:          }
  42:      }
  43:   
  44:      public class TestAccessModifierClass1
  45:      {
  46:          void AvailableAccessModifier()
  47:          {
  48:              AccessModifierClass item = new AccessModifierClass();
  49:              item.GetPublicString();
  50:              item.GetInternalString();
  51:              item.GetProtectedInternalString();
  52:          }
  53:      }
  54:   
  55:      public class TestAccessModifierClass2 : AccessModifierClass
  56:      {
  57:          void AvailableAccessModifier()
  58:          {
  59:              AccessModifierClass item = new AccessModifierClass();
  60:              item.GetPublicString();
  61:              item.GetInternalString();
  62:              item.GetProtectedInternalString();
  63:              base.GetProtectedString();
  64:          }
  65:      }
  66:  }

AccessModifierClass是我们的访问修饰符类,里面有五种访问修饰符方法,可见在AccessModifierClass类里面的AvailableAccessModifier()方法可以访问所有的方法。

在TestAccessModifierClass1类中的AvailableAccessModifier()方法只能访问public、Internal和Protected Internal方法。

TestAccessModifierClass2类继承自AccessModifierClass类,所以它的AvailableAccessModifier()方法可以访问public,internal,protected和protected internal方法。

在新建一个工程,且引用AccessModifierClass类的dll,代码如下:

   1:  using System;
   2:  using System.Collections.Generic;
   3:  using System.Text;
   4:  using AccessModifier;
   5:   
   6:  namespace AccessModifierApp
   7:  {
   8:      public class AccessModifierAppClass1 
   9:      {
  10:          void AvailableAccessModifier()
  11:          {
  12:              AccessModifierClass item = new AccessModifierClass();
  13:              item.GetPublicString();
  14:          }
  15:      }
  16:   
  17:      public class AccessModifierAppClass2 : AccessModifierClass
  18:      {
  19:          void AvailableAccessModifier()
  20:          {
  21:              AccessModifierClass item = new AccessModifierClass();
  22:              item.GetPublicString();
  23:              base.GetProtectedString();
  24:              base.GetProtectedInternalString();
  25:          }
  26:      }
  27:  }

 

AccessModifierAppClass1类的AvailableAccessModifier()方法只能访问public方法。

AccessModifierAppClass2类继承自AccessModifierClass类,所它的AvailableAccessModifier()方法可以访问public、protected和protected internal方法。

2
0
 
 
我的同类文章

参考知识库

更多资料请参考:
猜你在找
C#开发微信订阅号、服务号视频教程
.NET平台和C#编程从入门到精通
使用C#开发信息管理系统
疯狂的 C#——快速入门
征服JavaScript高级程序设计与应用实例视频课程
linux c 编程模板总结一
JAVA面试总结
java面试宝典
Java面试题全集上
Java面试题全集上
查看评论
16楼 12期一刘超 2016-03-29 20:01发表 [回复] [引用] [举报]
总结的很详细,感谢分享。
15楼 chaojidayuanzi 2016-01-30 23:49发表 [回复] [引用] [举报]
没有说sealed 差评
14楼 L545266193 2015-11-04 15:35发表 [回复] [引用] [举报]
第一次看到我看得懂的东西,真是详细又实用,谢谢!
13楼 ysvae 2015-07-20 10:00发表 [回复] [引用] [举报]
楼主,你这里有很明显的错误吧。在命名空间中定义的元素无法显式地声明为 private、protected 或 protected internal ,也就是说外部类只能声明为 public 或者 internal,而且默认是 internal,内部类默认修饰符才是private。
12楼 yuxinsuoxiang 2015-01-13 13:12发表 [回复] [引用] [举报]
11楼 twticpgk 2013-05-22 20:03发表 [回复] [引用] [举报]
非常感谢!非常形象!
10楼 haoxingfeng 2011-09-08 11:16发表 [回复] [引用] [举报]
好东西,学习了。!
9楼 懒虫虫 2010-02-03 18:37发表 [回复] [引用] [举报]
基础,多多学习!
Re: 灰太狼 2010-02-03 23:15发表 [回复] [引用] [举报]
回复懒虫虫:共同学习[e04]
8楼 灰太狼 2009-07-06 09:18发表 [回复] [引用] [举报]
没错。同一项目内的其他类都可以访问internal方法。详见blog中的示例1。
7楼 Speed_Michael 2009-07-02 09:56发表 [回复] [引用] [举报]
都是些基础
6楼 HandG 2009-07-02 08:12发表 [回复] [引用] [举报]
st
5楼 jikezhang88 2009-06-30 15:22发表 [回复] [引用] [举报]
goood
4楼 xylhx 2009-06-29 10:33发表 [回复] [引用] [举报]
菜,还是帮忙顶了
3楼 wanhahahahaha 2009-06-25 14:41发表 [回复] [引用] [举报]
good
2楼 灰太狼 2009-06-25 09:30发表 [回复] [引用] [举报]
谢谢。你说得对,我会添加上的。
1楼 book_customsyuan 2009-06-25 01:37发表 [回复] [引用] [举报]
基础呀:)
这其中可以考虑添加以下property、Class、Function的default上对应的修饰就会更好用了:)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值