Property Statement
Declares the name of a property, and the property procedures used to store and retrieve the value of the property.
Syntax
[ <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 ]
Parts
attributelist
Optional. List of attributes that apply to this property or
Get
orSet
procedure. See Attribute List.Default
Optional. Specifies that this property is the default property for the class or structure on which it is defined. Default properties must accept parameters and can be set and retrieved without specifying the property name. If you declare the property as
Default
, you cannot usePrivate
on the property or on either of its property procedures.accessmodifier
Optional on the
Property
statement and on at most one of theGet
andSet
statements. Can be one of the following:propertymodifiers
Optional. Can be one of the following:
MustOverride Overrides
NotOverridable Overrides
Shared
Optional. See Shared.
Shadows
Optional. See Shadows.
ReadOnly
Optional. See ReadOnly.
WriteOnly
Optional. See WriteOnly.
Iterator
Optional. See Iterator.
name
Required. Name of the property. See Declared Element Names.
parameterlist
Optional. List of local variable names representing the parameters of this property, and possible additional parameters of the
Set
procedure. See Parameter List.returntype
Required if
Option Strict
isOn
. Data type of the value returned by this property.Implements
Optional. Indicates that this property implements one or more properties, each one defined in an interface implemented by this property's containing class or structure. See Implements Statement.
implementslist
Required if
Implements
is supplied. List of properties being implemented.implementedproperty [ , implementedproperty ... ]
Each
implementedproperty
has the following syntax and parts:interface.definedname
Part Description interface
Required. Name of an interface implemented by this property's containing class or structure. definedname
Required. Name by which the property is defined in interface
.Get
Optional. Required if the property is marked
ReadOnly
. Starts aGet
property procedure that is used to return the value of the property. TheGet
statement is not used with automatically implemented properties.statements
Optional. Block of statements to run within the
Get
orSet
procedure.End Get
Terminates the
Get
property procedure.Set
Optional. Required if the property is marked
WriteOnly
. Starts aSet
property procedure that is used to store the value of the property. TheSet
statement is not used with automatically implemented properties.End Set
Terminates the
Set
property procedure.End Property
Terminates the definition of this property.
Remarks
The Property
statement introduces the declaration of a property. A property can have a Get
procedure (read only), a Set
procedure (write only), or both (read-write). You can omit the Get
and Set
procedure when using an automatically implemented property. For more information, see Automatically implemented properties.
You can use Property
only at class level. This means the declaration context for a property must be a class, structure, module, or interface, and cannot be a source file, namespace, procedure, or block. For more information, see Declaration Contexts and Default Access Levels.
By default, properties use public access. You can adjust a property's access level with an access modifier on the Property
statement, and you can optionally adjust one of its property procedures to a more restrictive access level.
Visual Basic passes a parameter to the Set
procedure during property assignments. If you do not supply a parameter for Set
, the integrated development environment (IDE) uses an implicit parameter named value
. This parameter holds the value to be assigned to the property. You typically store this value in a private local variable and return it whenever the Get
procedure is called.
Rules
Mixed Access Levels. If you are defining a read-write property, you can optionally specify a different access level for either the
Get
or theSet
procedure, but not both. If you do this, the procedure access level must be more restrictive than the property's access level. For example, if the property is declaredFriend
, you can declare theSet
procedurePrivate
, but notPublic
.If you are defining a
ReadOnly
orWriteOnly
property, the single property procedure (Get
orSet
, respectively) represents all of the property. You cannot declare a different access level for such a procedure, because that would set two access levels for the property.Return Type. The
Property
statement can declare the data type of the value it returns. You can specify any data type or the name of an enumeration, structure, class, or interface.If you do not specify
returntype
, the property returnsObject
.Implementation. If this property uses the
Implements
keyword, the containing class or structure must have anImplements
statement immediately following itsClass
orStructure
statement. TheImplements
statement must include each interface specified inimplementslist
. However, the name by which an interface defines theProperty
(indefinedname
) does not have to be the same as the name of this property (inname
).
Behavior
Returning from a Property Procedure. When the
Get
orSet
procedure returns to the calling code, execution continues with the statement following the statement that invoked it.The
Exit Property
andReturn
statements cause an immediate exit from a property procedure. Any number ofExit Property
andReturn
statements can appear anywhere in the procedure, and you can mixExit Property
andReturn
statements.Return Value. To return a value from a
Get
procedure, you can either assign the value to the property name or include it in aReturn
statement. The following example assigns the return value to the property namequoteForTheDay
and then uses theExit Property
statement to return.Private quoteValue As String = "No quote assigned yet."
ReadOnly Property QuoteForTheDay() As String Get QuoteForTheDay = quoteValue Exit Property End Get End Property
If you use
Exit Property
without assigning a value toname
, theGet
procedure returns the default value for the property's data type.The
Return
statement at the same time assigns theGet
procedure return value and exits the procedure. The following example shows this.Private quoteValue As String = "No quote assigned yet."
ReadOnly Property QuoteForTheDay() As String Get Return quoteValue End Get End Property
Example
The following example declares a property in a class.
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