方法: プロパティを作成する (Visual Basic)

プロパティ定義は、Property ステートメントと End Property ステートメントで囲みます。 この定義内で、Get プロシージャ、Set プロシージャ、またはその両方を定義します。 プロパティのすべてのコードは、これらのプロシージャ内にあります。

Get プロシージャ はプロパティの値を取得し、Set プロシージャは値を格納します。 プロパティに読み取り/書き込みアクセスが必要な場合は、両方のプロシージャを定義する必要があります。 読み取り専用プロパティでは Get のみを定義し、書き込み専用プロパティでは Set のみを定義します。

プロパティを作成するには

  1. 任意のプロパティまたはプロシージャの外部で、 Property ステートメント を使用し、その後に End Property ステートメントを使用します。

  2. プロパティがパラメーターを受け取る場合は、Property キーワードの後にプロシージャの名前を指定し、その後にかっこで囲んだパラメーター リストを指定します。

  3. かっこの後に As 句を入力して、プロパティの値のデータ型を指定します。 書き込み専用プロパティでもデータ型を指定する必要があります。

  4. 必要に応じて、Get および Set プロシージャを追加します。 以降の手順を参照してください。

プロパティ値を取得する Get プロシージャを作成するには

  1. Property ステートメントと End Property ステートメントの間に、Get ステートメントを記述し、その後に End Get ステートメントを記述します。 Get プロシージャのパラメーターを定義する必要はありません。

  2. Get ステートメントと End Get ステートメントの間に、プロパティの値を取得するコード ステートメントを配置します。 このコードでは、プロパティの値を生成して返すだけでなく、他の計算やデータ操作も含めることができます。

  3. Return ステートメントを使用して、プロパティの値を呼び出し元のコードに返します。

読み取り/書き込みプロパティと読み取り専用プロパティの Get プロシージャを記述する必要があります。 書き込み専用プロパティの Get プロシージャを定義することはできません。

プロパティの値を書き込む Set プロシージャを作成するには

  1. Property ステートメントと End Property ステートメントの間に、Set ステートメントを記述し、その後に End Set ステートメントを記述します。

  2. Set ステートメントでは、必要に応じて Set キーワードの後に、かっこで囲まれたパラメーター リストを指定します。 パラメーター リストが存在しない場合や空の場合は、プロパティ自体の型である Value という名前の暗黙的なパラメーターが定義されます。 パラメーター リストが空でない場合は、必要に応じて別の名前を使用できますが、パラメーターのデータ型はプロパティ自体と同じである必要があります。

  3. Set ステートメントと End Set ステートメントの間に、プロパティに値を格納するコード ステートメントを配置します。 このコードでは、プロパティの値を検証して格納するだけでなく、他の計算やデータ操作も含めることができます。

  4. 値パラメーターを使用して、呼び出し元のコードで指定された値を受け入れます。 この値は、代入ステートメントで直接格納することも、式で使用して格納する内部値を計算することもできます。

読み取り/書き込みプロパティと書き込み専用プロパティの Set プロシージャを記述する必要があります。 読み取り専用プロパティの Set プロシージャを定義することはできません。

次の例では、フル ネームを 2 つの構成要素名 (名と姓) として格納する読み取り/書き込みプロパティを作成します。 呼び出し元のコードが fullName を読み取ると、Get プロシージャが 2 つの構成要素名を結合し、フル ネームを返します。 呼び出し元のコードが新しいフル ネームを割り当てると、Set プロシージャがそれを 2 つの構成要素名に分割することを試みます。 スペースが見つからない場合は、すべてが名として格納されます。

Dim firstName, lastName As String
Property fullName() As String
    Get
      If lastName = "" Then
          Return firstName
      Else
          Return firstName & " " & lastName
      End If

    End Get
    Set(ByVal Value As String)
        Dim space As Integer = Value.IndexOf(" ")
        If space < 0 Then
            firstName = Value
            lastName = ""
        Else
            firstName = Value.Substring(0, space)
            lastName = Value.Substring(space + 1)
        End If
    End Set
End Property

次の例は、fullName のプロパティ プロシージャの一般的な呼び出しを示しています。 最初の呼び出しではプロパティ値を設定し、2 番目の呼び出しではそれを取得します。

fullName = "MyFirstName MyLastName"
MsgBox(fullName)

関連項目