Visual Basic 中的存取層級
宣告元素的 access level 是加以存取的能力範圍,也就是具有讀取或寫入權限的程式碼。 這不只取決於您宣告元素本身的方式,也取決於元素容器的存取層級。 無法存取包含元素的程式碼將無法存取其包含的任何元素,甚至是宣告為 Public
的元素。 例如,可以從包含結構的類別內部存取 Private
結構中的 Public
變數,但不能從該類別外部存取。
公開
宣告陳述式中的 Public 關鍵字會指定可以從相同專案中任何位置的程式碼、參考專案的其他專案,以及從專案建置的任何組件存取元素。 下列程式碼會顯示範例 Public
宣告:
Public Class ClassForEverybody
您只能在模組、介面或命名空間層級使用 Public
。 這表示您可以在來源檔案或命名空間的層級,或在介面、模組、類別或結構中宣告公用元素,但不能在程序中宣告。
Protected
宣告陳述式中的 Protected 關鍵字會指定只能從相同類別或衍生自此類別的類別存取元素。 下列程式碼會顯示範例 Protected
宣告:
Protected Class ClassForMyHeirs
您只能在類別層級使用 Protected
,且只能在宣告類別的成員時使用。 這表示您可以在類別中宣告 protected 元素,但不能在來源檔案或命名空間的層級,或在介面、模組、結構或程序中宣告。
Friend
宣告陳述式中的 Friend 關鍵字會指定可以從相同的組件存取元素,但不能從組件外部存取。 下列程式碼會顯示範例 Friend
宣告:
Friend stringForThisProject As String
您只能在模組、介面或命名空間層級使用 Friend
。 這表示您可以在來源檔案或命名空間的層級,或在介面、模組、類別或結構中宣告 friend 元素,但不能在程序中宣告。
Protected Friend
宣告陳述式中的 Protected Friend 關鍵字組合會指定可以從衍生類別或相同組件存取元素,或兩者皆可存取。 下列程式碼會顯示範例 Protected Friend
宣告:
Protected Friend stringForProjectAndHeirs As String
您只能在類別層級使用 Protected Friend
,且只能在宣告類別的成員時使用。 這表示您可以在類別中宣告 protected friend 元素,但不能在來源檔案或命名空間的層級,或在介面、模組、結構或程序中宣告。
私人
宣告陳述式中的 Private 關鍵字會指定只能從相同的模組、類別或結構中存取元素。 下列程式碼會顯示範例 Private
宣告:
Private _numberForMeOnly As Integer
您只能在模組層級使用 Private
。 這表示您可以在模組、類別或結構中宣告 private 元素,但不能在來源檔案或命名空間的層級,以及介面或程序中宣告。
在模組層級中,不包含任何存取層級關鍵字的 Dim
陳述式相當於 Private
宣告。 然而,建議您使用 Private
關鍵字,讓您的程式碼更容易閱讀及解譯。
Private Protected
宣告陳述式中的 Private Protected 關鍵字組合會指定只能從相同類別存取元素,以及從與包含類別位於相同組件中的衍生類別存取。 從 Visual Basic 15.5 開始,支援 Private Protected
存取修飾詞。
下列範例顯示 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 |
無限制: 任何可以看到 public 元素的程式碼都可以加以存取 |
介面 模組 類別 結構 結構成員 程序 屬性 成員變數 常數 列舉 事件 外部宣告 委派 |
來源檔案 Namespace 介面 模組 類別 結構 |
Protected |
衍生: 類別中宣告 protected 元素或衍生自其中類別的程式碼可以存取元素 |
介面 類別 結構 程序 屬性 成員變數 常數 列舉 事件 外部宣告 委派 |
類別 |
Friend |
組件︰ 宣告 friend 元素之組件中的程式碼可以加以存取 |
介面 模組 類別 結構 結構成員 程序 屬性 成員變數 常數 列舉 事件 外部宣告 委派 |
來源檔案 Namespace 介面 模組 類別 結構 |
Protected Friend |
Protected 與 Friend 的聯集:相同類別或與 protected friend 元素相同的組件,或衍生自元素類別之任何類別中的程式碼,都可以加以存取 |
介面 類別 結構 程序 屬性 成員變數 常數 列舉 事件 外部宣告 委派 |
類別 |
Private |
宣告內容: 宣告 private 元素之類型中的程式碼 (包括包含類型中的程式碼) 可以存取元素 |
介面 類別 結構 結構成員 程序 屬性 成員變數 常數 列舉 事件 外部宣告 委派 |
模組 類別 結構 |
Private Protected |
宣告 private protected 元素類別中的程式碼,或在與 bas 類別相同的組件中找到之衍生類別中的程式碼。 | 介面 類別 結構 程序 屬性 成員變數 常數 列舉 事件 外部宣告 委派 |
類別 |