您的位置:首页 > 编程语言 > C#

C#访问修饰符总结

2009-06-24 20:11 501 查看
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方法。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: