在C#語言中,共有五種存取修飾詞:public、private、protected、internal、protected internal。作用範圍如下表:
存取修飾詞 說明
public 公有訪問。不受任何限制。
private 私人訪問。只限於本類成員訪問,子類,執行個體都不能訪問。
protected 保護訪問。只限於本類和子類訪問,執行個體不能訪問。
internal 內部訪問。只限於本項目內訪問,其他不能訪問。
protected internal 內部保護訪問。只限於本項目或是子類訪問,其他不能訪問
C#成員類型的可修飾及預設修飾符如下表:
成員類型 預設修飾符 可被修飾符
enum public none
class private public、protected、internal、private、
protected internal
interface public none
struct private public、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方法。