一、訪問修飾符 訪問修飾符有public、private、protected、internal和protected internal。它們是修飾在類型(類、介面、委托、結構和枚舉)和類型成員(欄位、屬性、方法、構造函數等等)上控制其訪問許可權的關鍵字。 訪問修飾符雖然是修飾在類型和類型成員上的,但它卻 ...
一、訪問修飾符
訪問修飾符有public、private、protected、internal和protected internal。它們是修飾在類型(類、介面、委托、結構和枚舉)和類型成員(欄位、屬性、方法、構造函數等等)上控制其訪問許可權的關鍵字。
訪問修飾符雖然是修飾在類型和類型成員上的,但它卻控制著C#程式物理結構層次(程式集/類型/類型成員)之間的訪問許可權。如果把程式集看作國家,那麼類型就是國家的所有事物,而類型成員是所有事物的屬性和行為。我們把我們國家的人(類型)的心理活動這個屬性(類型成員)定義成private,那麼除了自己以外的人就不能訪問到你的心理活動;我們把我們國家的秘密武器(類型)定義成internal,那麼其他國家就無法訪問到我們國家的秘密武器。
1 /// <summary> 2 /// 洗衣機的類定義成internal,其他程式集不能訪問這個洗衣機的類 3 /// </summary> 4 internal class WashingMachine 5 { 6 /// <summary> 7 /// 洗衣時長定義成private,其他類就不能使用洗衣時長這個欄位,但洗衣機這個類里的其他成員可以使用 8 /// </summary> 9 private int duration; 10 }
訪問修飾符表(來源精通C#第六版)
註:從表中可以看出類型只能使用public和internal修飾(嵌套類型除外)。
註1:嵌套類型是指類型作為其他類型的類型成員。
註2:當不使用訪問修飾符修飾類型或者類型成員時,編譯器會賦予他們預設的訪問修飾符,類型為internal,類型成員為private。
註3:介面類型與枚舉類型的成員,不能使用訪問修飾符,因為它們始終是公共的。
註4:結構類型不能使用protected,因為結構類型是值類型,不能被繼承。
1 public class House 2 { 3 //類WashingMachine這裡是House類的類型成員,也叫嵌套類型 4 private WashingMachine washingMachine; 5 }