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 Get and Set procedures. The Set procedure should then store the incoming value in this Private variable.
The 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 (Visual Basic).
The 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.