VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > temp > C#教程 >
  • c#访问修饰符总结

制作者:剑锋冷月 单位:无忧统计网,www.51stat.net
 

  C#共有五种访问修饰符:public、private、protected、internal、protected internal。作用范围如下表:

 

访问修饰符 说明
public 公有访问。不受任何限制。
private 私有访问。只限于本类成员访问,子类,实例都不能访问。
protected 保护访问。只限于本类和子类访问,实例不能访问。
internal 内部访问。只限于本项目内访问,其他不能访问。
protected internal 内部保护访问。只限于本项目或是子类访问,其他不能访问

 

  下面我就结合实例,讲一下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方法。



相关教程