宣告元素的 存取層級 是存取它的能力範圍,也就是哪些程式代碼有權限讀取或寫入它。 這不只取決於您宣告元素本身的方式,也取決於元素容器的存取層級。 無法存取容器元素的程式代碼無法存取其任何包含的元素,即使是宣告為 Public 的元素也一樣。 例如, Public 結構中的 Private 變數可以從包含 結構的類別內部存取,但不能從該類別外部存取。
公共 / 公開 / 公眾
宣告語句中的 Public 關鍵詞指定該元素能被同一專案中的任何程式碼、引用此專案的其他專案,以及由此專案組建的任何組件存取。 下列程式代碼顯示範例 Public 宣告:
Public Class ClassForEverybody
您只能在模組、介面或命名空間層級使用 Public 。 這表示您可以在原始檔案或命名空間的層級,或者介面、模組、類別或結構內宣告公用元素,但無法在程序中宣告。
受保護
宣告語句中的 Protected 關鍵詞指定元素只能從相同類別訪問,或從此類別衍生的類別中存取。 下列程式代碼顯示範例 Protected 宣告:
Protected Class ClassForMyHeirs
您只能在類別層級使用 Protected ,而且只有在宣告類別的成員時。 這表示您可以在類別中宣告受保護的專案,但不能在來源檔案或命名空間的層級,或在介面、模組、結構或程式內宣告。
朋友
宣告語句中的 Friend 關鍵詞指定元素可以從相同的組件內部存取,但不能從外部存取。 下列程式代碼顯示範例 Friend 宣告:
Friend stringForThisProject As String
您只能在模組、介面或命名空間層級使用 Friend 。 這表示您可以在來源檔案或命名空間層級,或在介面、模組、類別或結構內宣告 friend 元素,但無法在程序中宣告。
受保護的朋友
宣告語句中的 Protected Friend 關鍵詞組合指定元素可以從衍生類別存取,或從相同組件中存取,或兩者皆可。 下列程式代碼顯示範例 Protected Friend 宣告:
Protected Friend stringForProjectAndHeirs As String
您只能在類別層級使用 Protected Friend ,而且只有在宣告類別的成員時。 這表示您可以在類別中宣告為受保護的 friend 元素,但不能在來源檔案或命名空間的層級,或是在介面、模組、結構或程序內宣告。
私人
宣告語句中的 Private 關鍵詞指定只能從相同的模組、類別或結構中存取專案。 下列程式代碼顯示範例 Private 宣告:
Private _numberForMeOnly As Integer
您只能在模組層級使用 Private 。 這表示您可以在模組、類別或結構內宣告私用元素,但不能在來源檔案或命名空間層級、介面內或程式中宣告。
在模組層級, Dim 不含任何存取層級關鍵詞的語句相當於 Private 宣告。 不過,您可能想要使用 Private 關鍵詞,讓您的程式代碼更容易閱讀和解譯。
私人受保護
宣告語句中的 Private Protected 關鍵詞組合指定元素只能從相同類別內部存取,以及從在與包含類別相同的組件中的衍生類別存取。
Private Protected 從 Visual Basic 15.5 開始,支援存取修飾子。
下列範例顯示 Private Protected 宣告:
Private Protected internalValue As Integer
您只能在類別內宣告 Private Protected 元素。 您無法在介面或結構內宣告它,也無法在來源檔案或命名空間的層級、介面或結構或程式中宣告它。
Visual Basic 15.5 和更新版本支援Private Protected存取修飾詞。 若要使用它,請將下列元素新增至 Visual Basic 專案 (*.vbproj) 檔案。 只要在您的系統上安裝 Visual Basic 15.5 或更新版本,即可利用最新版 Visual Basic 編譯程式所支援的所有語言功能:
<PropertyGroup>
<LangVersion>latest</LangVersion>
</PropertyGroup>
若要使用 Private Protected 存取修飾詞,您必須將下列元素新增至 Visual Basic 專案 (*.vbproj) 檔案:
<PropertyGroup>
<LangVersion>15.5</LangVersion>
</PropertyGroup>
如需詳細資訊,請參閱 設定Visual Basic語言版本。
存取控制修飾詞
指定存取層級的關鍵詞稱為 存取修飾詞。 下表比較存取修飾詞:
| 存取修飾詞 | 已授予存取權限 | 您可以使用這個存取層級宣告的元素 | 您可以使用此修飾詞的宣告環境或條件 |
|---|---|---|---|
Public |
無限制的: 任何可以看到公用元素的程序代碼都可以存取它 |
介面 模組 班級 結構體系 結構成員 程序 屬性 成員變數 常數 列舉項目 事件 外部宣告 代表們 |
來源檔案 Namespace 介面 模組 班級 結構 |
Protected |
衍生: 在類別中宣告受保護元素的程式碼,以及衍生自此類別的程式碼,都可以存取該元素。 |
介面 班級 結構體系 程序 屬性 成員變數 常數 列舉項目 事件 外部宣告 代表們 |
班級 |
Friend |
集會: 在組合中宣告友元成員的程式碼可以存取該成員。 |
介面 模組 班級 結構體系 結構成員 程序 屬性 成員變數 常數 列舉項目 事件 外部宣告 代表們 |
來源檔案 Namespace 介面 模組 班級 結構 |
Protected
Friend
|
Protected 和 Friend 的聯集在與受保護 friend 元素同一個類別或同一個元件中的程式碼,或在衍生自該元素類別的任何類別中的程式碼,都可以存取它。 |
介面 班級 結構體系 程序 屬性 成員變數 常數 列舉項目 事件 外部宣告 代表們 |
班級 |
Private |
宣告內容: 在宣告私有元素的型別中,代碼,包括包含在內的型別內的代碼,可以存取該元素。 |
介面 班級 結構體系 結構成員 程序 屬性 成員變數 常數 列舉項目 事件 外部宣告 代表們 |
模組 班級 結構 |
Private Protected |
類別程式碼中宣告私用受保護元素,或在與基類相同元件中的衍生類別內的程式碼。 | 介面 班級 結構體系 程序 屬性 成員變數 常數 列舉項目 事件 外部宣告 代表們 |
班級 |