次の方法で共有


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はクラス レベルでのみ使用でき、クラスのメンバーを宣言する場合にのみ使用できます。 つまり、クラスで保護されたフレンド要素を宣言できますが、ソース ファイルまたは名前空間のレベル、またはインターフェイス、モジュール、構造体、またはプロシージャ内では宣言できません。

非公開

宣言ステートメントの 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要素は、クラス内でのみ宣言できます。 インターフェイスまたは構造体内で宣言することはできません。また、ソース ファイルまたは名前空間のレベル、インターフェイスまたは構造体内、またはプロシージャで宣言することもできません。

Private Protected アクセス修飾子は、Visual Basic 15.5 以降でサポートされています。 これを使用するには、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 集会:

friend 要素を宣言するアセンブリ内のコードは、それにアクセスできます
インターフェイス

モジュール

クラス

構造体

構造体メンバー

プロシージャ

プロパティ

メンバー変数

定数

列挙型

イベント

外部宣言

デリゲート
ソース ファイル

Namespace

インターフェイス

モジュール

クラス

構造
ProtectedFriend ProtectedFriendの和集合:

保護されたフレンド要素と同じクラスまたは同じアセンブリ内のコード、または要素のクラスから派生した任意のクラス内のコードは、その要素にアクセスできます
インターフェイス

クラス

構造体

プロシージャ

プロパティ

メンバー変数

定数

列挙型

イベント

外部宣言

デリゲート
クラス
Private 宣言コンテキスト:

包含型内のコードを含むプライベート要素を宣言する型のコードは、要素にアクセスできます
インターフェイス

クラス

構造体

構造体メンバー

プロシージャ

プロパティ

メンバー変数

定数

列挙型

イベント

外部宣言

デリゲート
モジュール

クラス

構造
Private Protected プライベート保護された要素を宣言するクラス内のコード、または基底クラスと同じアセンブリ内にある派生クラスのコード。 インターフェイス

クラス

構造体

プロシージャ

プロパティ

メンバー変数

定数

列挙型

イベント

外部宣言

デリゲート
クラス

こちらも参照ください