BC42026: 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.

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.

See also