Expression recursively calls the containing property '<propertyname>'
A statement in the
Set procedure of a property definition stores a value into the name of the property.
The recommended approach to holding the value of a property is to define a
Private variable in the property's container and use it in both the
Set procedures. The
Set procedure should then store the incoming value in this
Get procedure behaves like a
Function procedure, so it can assign a value to the property name and return control by encountering the
End Get statement. The recommended approach, however, is to include the
Private variable as the value in a Return Statement.
Set procedure behaves like a
Sub procedure, which does not return a value. Therefore, the procedure or property name has no special meaning within a
Set procedure, and you cannot store a value into it.
The following example illustrates the approach that can cause this error, followed by the recommended approach.
Public Class illustrateProperties ' The code in the following property causes this error. Public Property badProp() As Char Get Dim charValue As Char ' Insert code to update charValue. badProp = charValue End Get Set(ByVal Value As Char) ' The following statement causes this error. badProp = Value ' The value stored in the local variable badProp ' is not used by the Get procedure in this property. End Set End Property ' The following code uses the recommended approach. Private propValue As Char Public Property goodProp() As Char Get ' Insert code to update propValue. Return propValue End Get Set(ByVal Value As Char) propValue = Value End Set End Property End Class
By default, this message is a warning. For more information about hiding warnings or treating warnings as errors, please see Configuring Warnings in Visual Basic.
Error ID: BC42026
To correct this error
- Rewrite the property definition to use the recommended approach as illustrated in the preceding example.