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 ProtectedFriend 的聯集:

相同類別或與 protected friend 元素相同的組件,或衍生自元素類別之任何類別中的程式碼,都可以加以存取
介面

類別

結構

程序

屬性

成員變數

常數

列舉

事件

外部宣告

委派
類別
Private 宣告內容:

宣告 private 元素之類型中的程式碼 (包括包含類型中的程式碼) 可以存取元素
介面

類別

結構

結構成員

程序

屬性

成員變數

常數

列舉

事件

外部宣告

委派
模組

類別

結構
Private Protected 宣告 private protected 元素類別中的程式碼,或在與 bas 類別相同的組件中找到之衍生類別中的程式碼。 介面

類別

結構

程序

屬性

成員變數

常數

列舉

事件

外部宣告

委派
類別

另請參閱