共用方式為


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

在與受保護 friend 元素同一個類別或同一個元件中的程式碼,或在衍生自該元素類別的任何類別中的程式碼,都可以存取它。
介面

班級

結構體系

程序

屬性

成員變數

常數

列舉項目

事件

外部宣告

代表們
班級
Private 宣告內容:

在宣告私有元素的型別中,代碼,包括包含在內的型別內的代碼,可以存取該元素。
介面

班級

結構體系

結構成員

程序

屬性

成員變數

常數

列舉項目

事件

外部宣告

代表們
模組

班級

結構
Private Protected 類別程式碼中宣告私用受保護元素,或在與基類相同元件中的衍生類別內的程式碼。 介面

班級

結構體系

程序

屬性

成員變數

常數

列舉項目

事件

外部宣告

代表們
班級

另請參閱