WEB开发网
开发学院软件开发C语言 C#访问修饰符总结 阅读

C#访问修饰符总结

 2009-06-26 07:08:11 来源:WEB开发网   
核心提示:C#共有五种访问修饰符:public、private、protected、internal、protected internal,作用范围如下表: 访问修饰符说明public公有访问,C#访问修饰符总结,不受任何限制,private私有访问,代码如下:1:usingSystem;2:usingSystem.Collec

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方法。

Tags:访问 修饰 总结

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接