宣言された要素の アクセス レベル は、その要素にアクセスする機能の範囲、つまり、読み取りまたは書き込みアクセス許可を持つコードです。 これは、要素自体を宣言する方法だけでなく、要素のコンテナーのアクセス レベルによっても決定されます。 含まれる要素にアクセスできないコードは、 Public
として宣言された要素であっても、含まれている要素にアクセスできません。 たとえば、Private
構造体内のPublic
変数には、構造体を含むクラス内からアクセスできますが、そのクラスの外部からはアクセスできません。
パブリック
宣言ステートメントの 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 キーワードの組み合わせでは、要素にアクセスできるのは同じクラス内からのみ、また、含まれるクラスと同じアセンブリ内にある派生クラスからのみアクセスできることを指定します。
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 |
無制限: パブリック要素を表示できるコードは、その要素にアクセスできます |
インターフェイス モジュール クラス 構造体 Structure メンバー プロシージャ 特性 メンバー変数 定数 列挙 イベント 外部宣言 デリゲート |
ソース ファイル Namespace インターフェイス モジュール クラス 構造 |
Protected |
派生: 保護された要素を宣言するクラス内のコード、またはその要素から派生したクラスは、その要素にアクセスできます |
インターフェイス クラス 構造体 プロシージャ 特性 メンバー変数 定数 列挙 イベント 外部宣言 デリゲート |
クラス |
Friend |
集会: friend 要素を宣言するアセンブリ内のコードは、それにアクセスできます |
インターフェイス モジュール クラス 構造体 Structure メンバー プロシージャ 特性 メンバー変数 定数 列挙 イベント 外部宣言 デリゲート |
ソース ファイル Namespace インターフェイス モジュール クラス 構造 |
Protected
Friend
|
Protected とFriend の和集合:保護されたフレンド要素と同じクラスまたは同じアセンブリ内のコード、または要素のクラスから派生した任意のクラス内のコードは、その要素にアクセスできます |
インターフェイス クラス 構造体 プロシージャ 特性 メンバー変数 定数 列挙 イベント 外部宣言 デリゲート |
クラス |
Private |
宣言コンテキスト: 包含型内のコードを含むプライベート要素を宣言する型のコードは、要素にアクセスできます |
インターフェイス クラス 構造体 Structure メンバー プロシージャ 特性 メンバー変数 定数 列挙 イベント 外部宣言 デリゲート |
モジュール クラス 構造 |
Private Protected |
プライベート保護された要素を宣言するクラス内のコード、または bas クラスと同じアセンブリ内にある派生クラス内のコード。 | インターフェイス クラス 構造体 プロシージャ 特性 メンバー変数 定数 列挙 イベント 外部宣言 デリゲート |
クラス |
こちらも参照ください
.NET