変数の可用性を制御するには、 そのアクセス レベルを指定します。 アクセス レベルは、変数に対する読み取りまたは書き込みのアクセス許可を持つコードを決定します。
メンバー変数 (モジュール レベルで定義され、プロシージャの外部で定義) は、既定でパブリック アクセスになります。つまり、メンバー変数を見ることができるすべてのコードからアクセスできます。 これを変更するには、アクセス修飾子を指定します。
ローカル変数 (プロシージャ内で定義) は、通常はパブリック アクセスを持ちますが、アクセスできるのはプロシージャ内のコードのみです。 ローカル変数のアクセス レベルは変更できませんが、ローカル変数を含むプロシージャのアクセス レベルを変更することはできます。
詳細については、「 Visual Basic のアクセス レベル」を参照してください。
プライベート アクセスとパブリック アクセス
モジュール、クラス、または構造体内からのみ変数にアクセスできるようにするには
変数の Dim ステートメント は、モジュール、クラス、または構造体内に配置しますが、プロシージャの外側に配置します。
-
モジュール、クラス、または構造体内の任意の場所から変数を読み書きできますが、外部からは読み取ったり書き込んだりすることはできません。
変数を表示できる任意のコードからアクセスできるようにするには
メンバー変数の場合は、変数の
Dim
ステートメントをモジュール、クラス、または構造体内に配置しますが、プロシージャの外側に配置します。Dim
ステートメントに Public キーワードを含めます。アセンブリと相互運用する任意のコードから変数の読み取りまたは書き込みを行うことができます。
-又は-
ローカル変数の場合は、変数の
Dim
ステートメントをプロシージャ内に配置します。Dim
ステートメントにPublic
キーワードを含めないでください。プロシージャ内の任意の場所から変数の読み取りまたは書き込みを行うことができますが、外部からは読み書きできません。
保護されたフレンド アクセス
変数のアクセス レベルは、そのクラスと派生クラス、またはそのアセンブリに制限できます。 これらの制限の和集合を指定することもできます。これにより、派生クラスまたは同じアセンブリ内の他の場所のコードからアクセスできます。 この共用体は、同じ宣言で Protected
キーワードと Friend
キーワードを組み合わせて指定します。
変数をそのクラスおよび派生クラス内からのみアクセスできるようにするには
変数の
Dim
ステートメントをクラス内に配置しますが、プロシージャの外側に配置します。Dim
ステートメントに Protected キーワードを含めます。変数の読み取りまたは書き込みは、クラス内のどこからでも行うことができますが、派生チェーン内のクラスの外部からは読み取りまたは書き込みできません。
同じアセンブリ内からのみ変数にアクセスできるようにするには
変数の
Dim
ステートメントは、モジュール、クラス、または構造体内に配置しますが、プロシージャの外側に配置します。Dim
ステートメントに Friend キーワードを含めます。モジュール、クラス、または構造体内の任意の場所から、また同じアセンブリ内の任意のコードから変数を読み書きできますが、アセンブリの外部からは読み取ったり書き込んだりすることはできません。
例
次の例は、 Public
、 Protected
、 Friend
、 Protected Friend
、および Private
アクセス レベルを持つ変数の宣言を示しています。
Dim
ステートメントでアクセス レベルを指定する場合は、Dim
キーワードを含める必要はありません。
Public Class classForEverybody
Protected Class classForMyHeirs
Friend stringForThisProject As String
Protected Friend stringForProjectAndHeirs As String
Private numberForMeOnly As Integer
.NET Framework のセキュリティ
変数のアクセス レベルの制限が厳しいほど、悪意のあるコードで不適切な使用を行う可能性が小さくなります。
こちらも参照ください
.NET