Visual Basic 中的存取層級

宣告元素的 存取層級 是存取它的能力範圍,也就是哪些程式代碼有權限讀取或寫入它。 這不只取決於您宣告元素本身的方式,也取決於元素容器的存取層級。 無法存取容器元素的程式代碼無法存取其任何包含的元素,即使是宣告為 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 類別程式碼中宣告私用受保護元素,或在與基類相同元件中的衍生類別內的程式碼。 介面

班級

結構體系

程序

屬性

成員變數

常數

列舉項目

事件

外部宣告

代表們
班級

另請參閱