次の方法で共有


方法: プロパティを作成する (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. value パラメーターを使用して、呼び出し元のコードによって指定された値を受け入れます。 この値は、代入ステートメントに直接格納することも、式で使用して格納する内部値を計算することもできます。

読み取り/書き込みプロパティと書き込み専用プロパティの 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)

こちらも参照ください