プロパティの名前、およびプロパティの値を格納して取得するために使用されるプロパティ プロシージャを宣言します。
構文
[ <attributelist> ] [ Default ] [ accessmodifier ]
[ propertymodifiers ] [ Shared ] [ Shadows ] [ ReadOnly | WriteOnly ] [ Iterator ]
Property name ( [ parameterlist ] ) [ As returntype ] [ Implements implementslist ]
[ <attributelist> ] [ accessmodifier ] Get
[ statements ]
End Get
[ <attributelist> ] [ accessmodifier ] Set ( ByVal value As returntype [, parameterlist ] )
[ statements ]
End Set
End Property
- or -
[ <attributelist> ] [ Default ] [ accessmodifier ]
[ propertymodifiers ] [ Shared ] [ Shadows ] [ ReadOnly | WriteOnly ]
Property name ( [ parameterlist ] ) [ As returntype ] [ Implements implementslist ]
指定項目
attributelist任意。 このプロパティか、
GetまたはSetプロシージャに適用される属性の一覧です。 「属性リスト」を参照してください。Default任意。 このプロパティが、定義されているクラスまたは構造体の既定のプロパティであることを指定します。 既定のプロパティはパラメーターを受け取る必要があり、プロパティ名を指定せずに設定および取得できます。 プロパティを
Defaultとして宣言する場合、プロパティで、またはそのプロパティ プロシージャのいずれかでPrivateを使用することはできません。 例と詳細なガイダンスについては、「 方法: Visual Basic で既定のプロパティを宣言して呼び出す」を参照してください。accessmodifierPropertyステートメントで、およびGetステートメントとSetステートメントのうちのいずれかで省略可能です。 次のいずれかの値を指定します。「 Access levels in Visual Basic」を参照してください。
propertymodifiers任意。 次のいずれかの値を指定します。
MustOverride OverridesNotOverridable Overrides
Shared任意。 「Shared」を参照してください。
Shadows任意。 「Shadows」を参照してください。
ReadOnly任意。 「ReadOnly」を参照してください。
WriteOnly任意。 「WriteOnly」を参照してください。
Iterator任意。 「Iterator」を参照してください。
name必須です。 プロパティ名。 「 Declared Element Names」を参照してください。
parameterlist任意。 このプロパティのパラメーターと、
Setプロシージャの指定できるその他のパラメーターを表すローカル変数名の一覧です。 パラメーター化されたプロパティは、インデクサーまたはコレクションのようなアクセスを許可する既定のプロパティを作成するためによく使用されます。 「 パラメーター リスト 」および「 方法: Visual Basic で既定のプロパティを宣言して呼び出す」を参照してください。returntypeOption StrictがOnの場合は必ず指定します。 このプロパティによって返される値のデータ型。Implements任意。 このプロパティが、それぞれがこのプロパティの含まれているクラスまたは構造体によって実装されたインターフェイスに定義されている、1 つ以上のプロパティを実装することを示します。 「Implements ステートメント」を参照してください。
implementslistImplementsを指定する場合は、必ず指定します。 実装されるプロパティの一覧です。implementedproperty [ , implementedproperty ... ]implementedpropertyの構文と指定項目は次のとおりです。interface.definednameパーツ 説明 interface必須です。 このプロパティの含まれているクラスまたは構造体によって実装されたインターフェイスの名前です。 definedname必須です。 interfaceの中でプロパティを定義するために使用する名前です。Get任意。 プロパティが
ReadOnlyとマークされている場合は、必ず指定します。 プロパティの値を返すために使用されるGetプロパティ プロシージャを開始します。Getステートメントは、自動的に実装されるプロパティ使用されません。statements任意。
GetまたはSetプロシージャ内で実行するためのステートメントのブロック。End GetGetプロパティ プロシージャを終了します。Set任意。 プロパティが
WriteOnlyとマークされている場合は、必ず指定します。 プロパティの値を格納するために使用されるSetプロパティ プロシージャを開始します。Setステートメントは、自動的に実装されるプロパティ使用されません。End SetSetプロパティ プロシージャを終了します。End Propertyこのプロパティの定義を終了します。
Remarks
Property ステートメントは、プロパティの宣言を導入します。 プロパティには Get プロシージャ (読み取り専用)、Set プロシージャ (書き込み専用)、またはその両方 (読み取り/書き込み) を指定できます。 自動的に実装されるプロパティを使用する場合は、 Get プロシージャと Set プロシージャを省略できます。 詳細については、「 自動実装プロパティを参照してください。
Property は、クラス レベルでのみ使用できます。 つまり、プロパティの宣言コンテキストは、クラス、構造体、モジュール、またはインターフェイスであることが必要で、ソース ファイル、名前空間、プロシージャ、ブロックでは宣言できません。 詳細については、「宣言コンテキストと既定のアクセス レベル」を参照してください。
既定では、プロパティはパブリック アクセスを使用します。
Property ステートメントでアクセス修飾子を使用してプロパティのアクセス レベルを調整できます。また、必要に応じて、そのプロパティ プロシージャの 1 つをより制限の厳しいアクセス レベルに調整することもできます。 混合アクセス レベルの詳細な例については、「方法: アクセス レベルが 混在するプロパティを宣言する」を参照してください。
Visual Basic は、プロパティの割り当て時に Set プロシージャにパラメーターを渡します。
Set のパラメーターを指定しない場合、統合開発環境 (IDE) では value という名前の暗黙的なパラメーターが使用されます。 このパラメーターは、プロパティに割り当てられる値を保持します。 通常はこの値をプライベート ローカル変数に格納し、これは Get プロシージャが呼び出されるたびに返されます。
ルール
混合アクセス レベル。 読み取り/書き込みプロパティを定義する場合は、必要に応じて、
GetまたはSetのいずれかのプロシージャに対して異なるアクセス レベルを指定できますが、両方に対して指定することはできません。 この場合、プロシージャのアクセス レベルは、プロパティのアクセス レベルよりも制限されている必要があります。 たとえば、プロパティがFriendとして宣言されている場合は、Setプロシージャを、PrivateではなくPublicとして宣言できます。ReadOnlyまたはWriteOnlyプロパティを定義する場合、1 つのプロパティ プロシージャ (それぞれGetまたはSet) がプロパティのすべてを表します。 このようなプロシージャに対して異なるアクセス レベルを宣言することはできません。これは、プロパティに 2 つのアクセス レベルが設定されるためです。戻り値の型。
Propertyステートメントは、返される値のデータ型を宣言できます。 任意のデータ型や、列挙、構造体、クラス、またはインターフェイスの名前を指定できます。returntypeを指定しない場合、プロパティはObjectを返します。実装: このプロパティで
Implementsキーワードが使用されている場合、含まれているクラスまたは構造体には、そのImplementsまたはClassステートメントの直後にStructureステートメントが必要です。Implementsステートメントには、implementslistで指定された各インターフェイスを含める必要があります。 ただし、インターフェイスがPropertyを定義するときに使用する名前 (definedname) は、このプロパティの名前と同じである必要はありません (name)。
動作
プロパティ プロシージャからの復帰。
GetまたはSetプロシージャから呼び出し元のコードに返されると、実行は、それを呼び出したステートメントの後のステートメントを使用して続行されます。Exit PropertyおよびReturnステートメントでは、プロパティ プロシージャがすぐに終了します。 任意の数のExit PropertyおよびReturnステートメントをプロシージャ内の任意の場所に記述でき、Exit PropertyステートメントとReturnステートメントを混在させることができます。戻り値。
Getプロシージャから値を返すには、プロパティ名に値を割り当てるか、Returnステートメントに値を含めることができます。 次の例では、プロパティ名quoteForTheDayに戻り値を割り当ててから、Exit Propertyステートメントを使用して返します。Private quoteValue As String = "No quote assigned yet."ReadOnly Property QuoteForTheDay() As String Get QuoteForTheDay = quoteValue Exit Property End Get End PropertyExit Propertyに値を割り当てずにnameを使用すると、Getプロシージャは、プロパティのデータ型の既定値を返します。同時に、
ReturnステートメントによってGetプロシージャの戻り値が割り当てられ、プロシージャが終了します。 次に例を示します。Private quoteValue As String = "No quote assigned yet."ReadOnly Property QuoteForTheDay() As String Get Return quoteValue End Get End Property
例
次の例では、クラス内にプロパティを宣言しています。
Class Class1
' Define a local variable to store the property value.
Private propertyValue As String
' Define the property.
Public Property Prop1() As String
Get
' The Get property procedure is called when the value
' of a property is retrieved.
Return propertyValue
End Get
Set(ByVal value As String)
' The Set property procedure is called when the value
' of a property is modified. The value to be assigned
' is passed in the argument to Set.
propertyValue = value
End Set
End Property
End Class
パラメーター化されたプロパティ
次の例は、インデクサーとも呼ばれるパラメーター化されたプロパティを作成する方法を示しています。これにより、配列に似たコレクションへのアクセスが許可されます。
Class SampleCollection
' Define a local collection to store strings.
Private items As New List(Of String)
' Define a parameterized property (indexer) for the collection.
Default Public Property Item(ByVal index As Integer) As String
Get
' Return the item at the specified index.
If index >= 0 AndAlso index < items.Count Then
Return items(index)
Else
Return Nothing
End If
End Get
Set(ByVal value As String)
' Set the item at the specified index.
If index >= 0 AndAlso index < items.Count Then
items(index) = value
ElseIf index = items.Count Then
' Allow adding new items at the end.
items.Add(value)
End If
End Set
End Property
' Add a Count property for convenience.
Public ReadOnly Property Count As Integer
Get
Return items.Count
End Get
End Property
' Add method to add items.
Public Sub Add(ByVal item As String)
items.Add(item)
End Sub
End Class
自動実装、混合アクセス レベル、検証シナリオなど、プロパティの使用の包括的な例については、「 プロパティ プロシージャ」を参照してください。
関連項目
プロパティの種類と機能
高度なプロパティのシナリオ
関連するステートメントと概念
.NET