Search code examples
.netvb.netnested-class

How to get a value inside parent class from child class (in nested classes)?


I have Class1 and class2 which is inside class1, VB.NET code:

Public Class class1
    Public varisbleX As Integer = 1
    Public Class class2
        Public Sub New()
            'Here GET the value of VariableX
        End Sub
    End Class

    Public Sub New()
        Dim cls2 As New class2
    End Sub
End Class

I want to access varisbleX from class2, code in VB.net or C# is appreciated, Thanks.


Solution

  • The inner class (class2) is not associated with any specific instance of the outer class (class1). T access fields etc, you will need to first have an explicit reference to a class1 instance, probably passing it in via the constructor. For example, it could be:

    Public Class class1
        Public varisbleX As Integer = 1
        Public Class class2
            Public Property Parent As class1
    
            Public Sub New(oParent As class1)
                Me.Parent = oParent
                Console.WriteLine(oParent.varisbleX)
            End Sub
        End Class
    
        Public Sub New()
            Dim cls2 As New class2(Me)
        End Sub
    End Class