如果 class y 在 class x 内部,为什么 class y 的实例不在实例内部?

if class y is inside of class x, why isnt instance of class y inside of instance?

我正在为我正在编写的杂货店应用程序编写 VB.NET class 库,但我认为我对 OOP 在 VB.NET 中的工作方式有误解。我原以为如果 class xclass y 中,那么 class xinstance 也会在 instance[=26 中=] 的 class y,但显然情况并非如此。我如何设置它才能通过 class y 访问 class x 的实例?还有为什么实例 x 不在实例 y 中?

(更新:我的意思是这个)

Public Class y
    Public Class x //class inside of class
    End Class
End Class
Public Class Form1
    Public Sub Form1_Load(<params>) Handles Me.Load
         Dim yinst As y = New y()
         Dim xinst As x = New y.x()
         MsgBox(yinst.xinst) //instance inside of instance
    End Sub
End Class

这会起作用(消息框调用除外),但我不确定这是否是您真正想要的。

Public Class y
   Public Class x '//class inside of class
   End Class
End Class

Public Class Form1
   Public Sub Form1_Load(<params>) Handles Me.Load
        Dim yinst As y = New y()
        Dim xinst As y.x = New y.x()
        'MsgBox(yinst.xinst) '//instance inside of instance
   End Sub
End Class

如果您希望 y 的实例具有 x 的实例,那么我认为您需要这样的东西:

Public Class y
    private x As New x 'A reference to an instance of x
    Public Class x 'class inside of class
    End Class
End Class

...或更好:

Public Class y
     Private _x As New x 'A reference to an instance of x
     Public Class x 'class inside of class
End Class

    Public Property InstX As x
        Get
            Return _x
        End Get
        Set(value As x)
            _x = value
        End Set
    End Property
End Class

在任何一种形式中,x 都可以通过 Dim xinst As y.x = yinst.InstX 访问。