次の方法で共有


方法: 変数の可用性を制御する (Visual Basic)

変数の可用性を制御するには、 そのアクセス レベルを指定します。 アクセス レベルは、変数に対する読み取りまたは書き込みのアクセス許可を持つコードを決定します。

  • メンバー変数 (モジュール レベルで定義され、プロシージャの外部で定義) は、既定でパブリック アクセスになります。つまり、メンバー変数を見ることができるすべてのコードからアクセスできます。 これを変更するには、アクセス修飾子を指定します。

  • ローカル変数 (プロシージャ内で定義) は、通常はパブリック アクセスを持ちますが、アクセスできるのはプロシージャ内のコードのみです。 ローカル変数のアクセス レベルは変更できませんが、ローカル変数を含むプロシージャのアクセス レベルを変更することはできます。

詳細については、「 Visual Basic のアクセス レベル」を参照してください。

プライベート アクセスとパブリック アクセス

モジュール、クラス、または構造体内からのみ変数にアクセスできるようにするには

  1. 変数の Dim ステートメント は、モジュール、クラス、または構造体内に配置しますが、プロシージャの外側に配置します。

  2. ステートメントに Dim キーワードを含めます。

    モジュール、クラス、または構造体内の任意の場所から変数を読み書きできますが、外部からは読み取ったり書き込んだりすることはできません。

変数を表示できる任意のコードからアクセスできるようにするには

  1. メンバー変数の場合は、変数の Dim ステートメントをモジュール、クラス、または構造体内に配置しますが、プロシージャの外側に配置します。

  2. Dim ステートメントに Public キーワードを含めます。

    アセンブリと相互運用する任意のコードから変数の読み取りまたは書き込みを行うことができます。

-又は-

  1. ローカル変数の場合は、変数の Dim ステートメントをプロシージャ内に配置します。

  2. Dim ステートメントに Public キーワードを含めないでください。

    プロシージャ内の任意の場所から変数の読み取りまたは書き込みを行うことができますが、外部からは読み書きできません。

保護されたフレンド アクセス

変数のアクセス レベルは、そのクラスと派生クラス、またはそのアセンブリに制限できます。 これらの制限の和集合を指定することもできます。これにより、派生クラスまたは同じアセンブリ内の他の場所のコードからアクセスできます。 この共用体は、同じ宣言で Protected キーワードと Friend キーワードを組み合わせて指定します。

変数をそのクラスおよび派生クラス内からのみアクセスできるようにするには

  1. 変数の Dim ステートメントをクラス内に配置しますが、プロシージャの外側に配置します。

  2. Dim ステートメントに Protected キーワードを含めます。

    変数の読み取りまたは書き込みは、クラス内のどこからでも行うことができますが、派生チェーン内のクラスの外部からは読み取りまたは書き込みできません。

同じアセンブリ内からのみ変数にアクセスできるようにするには

  1. 変数の Dim ステートメントは、モジュール、クラス、または構造体内に配置しますが、プロシージャの外側に配置します。

  2. Dim ステートメントに Friend キーワードを含めます。

    モジュール、クラス、または構造体内の任意の場所から、また同じアセンブリ内の任意のコードから変数を読み書きできますが、アセンブリの外部からは読み取ったり書き込んだりすることはできません。

次の例は、 PublicProtectedFriendProtected 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 のセキュリティ

変数のアクセス レベルの制限が厳しいほど、悪意のあるコードで不適切な使用を行う可能性が小さくなります。

こちらも参照ください