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

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

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

  • ローカル変数 (プロシージャ内に定義) は、名目上パブリック アクセス権を持ちますが、それらのプロシージャ内のコードだけがそれらにアクセスできます。 ローカル変数のアクセス レベルを変更することはできませんが、それを含むプロシージャのアクセス レベルを変更することはできます。

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

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

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

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

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

    変数の読み取りや書き込みは、モジュール、クラス、または構造体内のどこからでも行うことができますが、その外部から行うことはできません。

変数を参照できるすべてのコードから変数にアクセスできるようにするには

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

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

    アセンブリと相互運用するすべてのコードから変数の読み取りや書き込みができます。

\- または -

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

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

    変数の読み取りや書き込みは、プロシージャ内のどこからでも行うことができますが、その外部から行うことはできません。

Protected アクセスと Friend アクセス

変数のアクセス レベルは、そのクラス、任意の派生クラス、またはそのアセンブリに制限できます。 また、これらの制限の和集合を指定することもできます。これにより、任意の派生クラスまたは同じアセンブリ内の他の任意の場所のコードからアクセスできるようになります。 この和集合を指定するには、同じ宣言で 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 セキュリティ

変数のアクセス レベルの制限を強めるほど、悪意のあるコードによってそれが不正使用される可能性が低くなります。

関連項目